如何避免相互依赖的系统间耦合

简介: 如何避免相互依赖的系统间耦合

如何避免相互依赖的系统间耦合



两个应用熊中需要远程传递数据,常规的做法是直接进行远程调用,使用 Http,或者 其他 RMI 方式进行调用,但是这种方式将系统耦合起来,一旦被调用的系统产生了故障或者升级,都可能会引起调用者导致不得不跟随升级。

如何避免这种情况?

主要手段是使用消息队列的异步架构。


消息队列实现异步架构


消息队列实现异步架构是相对于同步队列来说的,同步架构是指,当应用程序调用服务是,当前程序需要阻塞等待服务完成,才能接着进行后续执行。

消息异步架构如下:

640.png


消息队列异步架构主要角色包括消息生产者,消息队列,消息消费者。消息生产者通过是主应用程序生产者将调用请求封装成消息发送给消息队列。 消费者消费程序从队列中获取,消费消息,由消费者完成业务逻辑处理。


点对点模式场景


多个消费生产者向消息队列发送消息,多个消息消费者消费消息,每个消息只会被一个消息消费者消费。


640.png

一对多


消息生产者可以按照主题进行发送,多个消息消费者可订阅同一个主题,每个消费者都可以收到这主题消息拷贝,然后按照自己的业务逻辑分别进行处理。

640.png



消息队列异步架构优点


使用消息队列异步架构,可以实现更高的写操作性能和更低的耦合性

  1. 改善写操作请求的响应时间

使用消息队列,生产者应有程序只需要将消息发送到消息队列,然后继续执行,无需等待消息消费处理,加快了响应速度。

  1. 更容易实现伸缩

应用程序可以通过负载均衡实现集群伸缩,这个是基于应用服务器级别的伸缩,如果使用消息队列,将图片处理相关的操作放在消费者服务器上,那么就可以单独对图片处理的消费者集群进行伸缩。这个是基于应用级别的伸缩。

  1. 削峰 互联网的访问压力随时都在变化,系统的访问高峰和低谷的并发压力差别非常大。因此可以在压力最大的时候,使用消息队列,这样将需要处理的消息放入消息队列,消费者可以控制消费速度,能够降低系统访问高峰时的压力,在访问低谷时续消费消息队列中的消息。
  2. 解耦

调用这发消息到消息队列,不需要依赖被调用这的代码和处理结果,增加新的功能,只需要增加新的消费者即可。


总结


消息队列异步架构是改善互联网应用操作性能的手段,是低耦合,易扩展的分布式应用架构模式。

相关文章
|
5月前
|
存储 测试技术 API
如何避免微服务设计中的耦合问题
如何避免微服务设计中的耦合问题
58 4
|
6月前
软件复杂度问题之什么是高内聚低耦合设计,实现一个高内聚低耦合的接口该如何解决
软件复杂度问题之什么是高内聚低耦合设计,实现一个高内聚低耦合的接口该如何解决
|
5月前
|
设计模式 算法 开发者
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
|
6月前
|
开发框架 前端开发 关系型数据库
Winform开发的快速、健壮、解耦的几点建议
Winform开发的快速、健壮、解耦的几点建议
|
8月前
软件设计原则:耦合与内聚
软件设计原则:耦合与内聚
187 0
|
敏捷开发 Java
如何降低类之间的耦合
如何降低类之间的耦合
70 0
|
设计模式 网络协议 测试技术
你的代码是否按照高内聚、低耦合的原则来设计的?
你的代码是否按照高内聚、低耦合的原则来设计的?
零耦合?抽象耦合?具体耦合?
零耦合?抽象耦合?具体耦合?
113 0
|
设计模式 算法
原则的重要性(单一职责原则-开放封闭原则)一
原则的重要性(单一职责原则-开放封闭原则)一
102 0

热门文章

最新文章

下一篇
开通oss服务