应用解耦

简介: 应用解耦

应用解耦
场景说明: 用户下单后,订单系统需要通知库存系统和支付系统。传统的做法是,订单系统调用库存系统和支付系统的接口。如下图

传统模式的缺点:

假如库存系统或者是支付无法访问,则订单减库存将失败或者是支付失败,从而导致订单失败

订单系统与库存系统耦合

如何解决以上问题呢?引入应用消息队列后的方案,如下图:

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,支付系统根据下单信息,进行支付操作
假如:在下单时库存系统或支付系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统,订单系统和支付系统的应用解耦。

目录
相关文章
|
4天前
|
存储 前端开发 数据库
模块功能分层解耦
模块功能分层解耦
19 2
|
4天前
|
设计模式 程序员 数据处理
C++ 职责链模式:轻松实现解耦和扩展性
C++ 职责链模式:轻松实现解耦和扩展性
33 1
|
4天前
|
Java API
关于“解耦”的思考
关于“解耦”的思考
14 0
|
7月前
零耦合?抽象耦合?具体耦合?
零耦合?抽象耦合?具体耦合?
|
11月前
|
编译器
|
JSON 数据格式 计算机视觉
微服务如何实现各个模块之间相互调用
微服务如何实现各个模块之间相互调用
386 0
|
存储 消息中间件 监控
复杂任务中,流程的解耦设计
在系统开发的过程中,必然存在耗时极高的动作,是基于请求响应模式无法解决的问题,通常会采用解耦的思维,并基于异步或者事件驱动的方式去调度整个流程的完整执行。
382 0
复杂任务中,流程的解耦设计
|
Java 程序员 Maven
耦合必然性
最近学到一个词“耦合创伤应激障碍”,讲的是程序员对耦合条件反射式恐惧,对于这个新词,我再重新理解一篇 对于一名程序员,从入行开始,就听到前辈们对“高内聚低耦合”的谆谆教诲,所以对于低耦合的意识深入骨髓。知行合一,看看是怎么践行的,打开任何一个项目工程,可以看到,每一个service都有一个interface和impl,代码看起来整整齐齐,所有变化点都考虑到了,但其实没有降低问题复杂度,只是自己看着舒服
108 0
|
消息中间件 存储 关系型数据库
基于领域事件实现微服务解耦
基于领域事件实现微服务解耦
157 0
基于领域事件实现微服务解耦