分享一例同一系统里不同服务之间通信的设计方案

优付系统结构如下。一个数据库之上,有商户接口(RestAPI)、运营后台(OMS)、商户门户这3个独立SSM应用,三者有各自不同的功能处理逻辑。

分享一例同一系统里不同服务之间通信的设计方案

现在呢,要做一个补偿工具。当付款单下发因为系统发版等意外导致失败时,要通过这个工具,来人工重发。

工具要做到运用后台(OMS)系统。

但是,付款单下发逻辑在商户接口服务里。

那么,如何实现这个小小的优化需求呢?

方案如下:

  1. 商户接口服务新增一个RestAPI,供OMS调用。这样的话,要做好Rest接口的安全认证,防止误访问。那么,OMS对接就会有这些工作量。

  2. 考虑到是同一个数据库,所以,可以建一个表,OMS保存要补偿的订单。商户接口服务定时轮询这个表进行处理。不足:定时任务,处理时效慢。

  3. 利用消息队列(MQ)。这是最好也是最可靠的方案。OMS作为消息生产者,商户接口服务是消息消费者。保证了处理时效,局域网也不需要考虑接口安全。碰巧RabbitMQ消息中间件当前在系统里有使用,所以接入成本很小。

  4. RPC也是不错的选择,例如dubbo。当前这个系统未有效使用RPC,暂不考虑。

以上每一种方案,幂等是必不可少的。

Original: https://www.cnblogs.com/buguge/p/16417574.html
Author: buguge
Title: 分享一例同一系统里不同服务之间通信的设计方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591626/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Docker从入门到精通

    1 容器简介1.1 什么是 Linux 容器1.2 容器不就是虚拟化吗1.3 容器发展简史2 什么是 Docker?2.1 Docker 如何工作?2.2 Docker 技术是否与…

    数据库 2023年6月14日
    0135
  • JavaWeb过滤器Filter(附tomcat部分源码分析)

    过滤器Filter 过滤器通常对一些web资源进行拦截,做完一些处理器再交给下一个过滤器处理,直到所有的过滤器处理器,再调用servlet实例的service方法进行处理。过滤器可…

    数据库 2023年6月16日
    0150
  • 面试必问之 ConcurrentHashMap 线程安全的具体实现方式

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在之前的集合文章中,我们了解到 HashMap 在多线程环境下操作可能会导致程序死循环的线上故障! 既然在多线程环境下…

    数据库 2023年6月14日
    0119
  • LeetCode 9. 回文数

    题目 题目链接:https://leetcode.cn/problems/palindrome-number/ 给你一个整数x,如果x是一个回文整数,返回true;否则,返回fal…

    数据库 2023年6月11日
    0133
  • markdown语法

    特殊字符对照表 点击查看特殊字符对照表 特殊字符 描述 字符代码 空格符 & 逻辑与 < 小于号 大于号 ¥ 人民币 ± 正负号 × 乘号 ÷ 除号 © 版权符号 ®…

    数据库 2023年6月6日
    096
  • Oracle培训-介绍与体系架构

    1979年,公司推出Oracle 2,这是计算机软件史上第一个由纯软件公司开发的商用关系型数据库管理系统。公司改名为”关系软件公司” (Relational…

    数据库 2023年6月11日
    0124
  • MySQL实战45讲 9

    09 | 普通索引和唯一索引,应该怎么选择? 每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的…

    数据库 2023年6月16日
    0144
  • IO模型

    Unix IO模型 对于一个套接字上的输入操作,分为两步: 等待数据准备好(从网络中到达,到内核缓冲区) 将数据从内核缓冲区复制到应用进程缓冲区 I/O模型主要为以下五种: 阻塞I…

    数据库 2023年6月11日
    0106
  • RabbitMQ的延迟消息(或预定消息)添加到 RabbitMQ 的插件

    1.插件网站下载自己的版本插件,,以rabbitmq_delayed_message_exchange-3.10.0.ez .ez为后缀 https://github.com/ra…

    数据库 2023年6月6日
    0134
  • Java 8的新特性还不了解?快进来!

    能坚持别人不能坚持的,才能拥有你想拥有的。关注 &#x7F16;&#x7A0B;&#x5927;&#x9053;,让我们一起成长 哈喽,大家好,我是…

    数据库 2023年6月11日
    0103
  • 建造者设计模式

    可以看到这个学生类的属性是非常多的,所以构造方法不是一般的长,如果我们现在直接通过new的方式去创建: 可以看到,我们光是填参数就麻烦,我们还得一个一个对应着去填,一不小心可能就把…

    数据库 2023年6月14日
    0106
  • Java面向对象(上)

    Java面向对象(上) 一、面向对象的思想 1、面向过程: 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤逐一实现,使用的时候依次调用就可以了。 2、面向对象: 面向…

    数据库 2023年6月11日
    0129
  • [spring]spring的bean自动装配机制

    是spring满足bean依赖的一种方式 spring会在上下文中自动寻找,并自动给bean装配属性 spring的装配方式: (1)手动装配 在people类中依赖了cat和do…

    数据库 2023年6月16日
    0110
  • 编程相关书单

    软工概论软件工程软件工程:实践者的研究方法 职业素养软技能码农翻身技术之瞳程序员修炼之道程序员的职业素养程序员的自我修养 程序设计计算机程序的构造和解释 (SICP) UML软件建…

    数据库 2023年6月11日
    0113
  • Java编程作业

    1、编程题 设计一个用户类User,类中的变量有用户名、密码和记录用户数量的变量,定义3个构造方法:无参的、为用户名赋值的、为用户名和密码赋值的,还有获取和设置密码的方法和返回类信…

    数据库 2023年6月11日
    0114
  • MyBatisPlus代码生成示例

    一、依赖 com.baomidou mybatis-plus-generator 3.5.3 org.projectlombok lombok 1.18.16 compile or…

    数据库 2023年6月11日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球