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

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

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



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

如何避免这种情况?

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


消息队列实现异步架构


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

消息异步架构如下:

640.png


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


点对点模式场景


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


640.png

一对多


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

640.png



消息队列异步架构优点


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

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

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

  1. 更容易实现伸缩

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

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

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


总结


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

相关文章
|
2月前
|
设计模式 数据可视化 测试技术
使业务逻辑更加清晰,便于理解和维护
使业务逻辑更加清晰,便于理解和维护
20 2
|
4月前
软件设计原则:耦合与内聚
软件设计原则:耦合与内聚
60 0
|
10月前
|
消息中间件 数据采集 JSON
高并发设计系列-维护篇
高并发设计系列-维护篇
|
6月前
|
敏捷开发 Java
如何降低类之间的耦合
如何降低类之间的耦合
40 0
|
7月前
零耦合?抽象耦合?具体耦合?
零耦合?抽象耦合?具体耦合?
|
10月前
|
消息中间件 存储 前端开发
该如何理解接口的幂等性?这里总结的很到位
随着互联网的发展,Web API 已成为现代应用程序的重要组成部分,它允许不同的应用程序之间进行通信和数据交换。 那么今天就来讲下关于 Web API 中接口幂等性的一些技术内容,希望对大家有所帮助。
|
11月前
|
编译器
|
设计模式 前端开发 Java
职责驱动设计以及状态模式的变化
职责驱动设计以及状态模式的变化
职责驱动设计以及状态模式的变化
|
设计模式 关系型数据库
组件构建原则(五):稳定抽象原则
组件构建原则(五):稳定抽象原则
519 0