深入剖析消息中间件

传统的分布式对象调用应用广泛,但面对复杂的分布式系统,显示出一些局限性,比如模块间耦合度较高,同步通信延迟较高,消息中间件是一个中间层软件。

一、消息中间件主要的特点

1.可靠性基于消息的通信是可靠的,大多数消息中间件都提供将消息持久化到磁盘的功能,可以发送离线消息,消息不会丢失。在分布式事务中担当重要的角色。

2.异步基于事件驱动架构,将调用异步化

3.分布式:消息中间件都是分布式的

4.高效的数据分发:高效的算法,提高消息的吞吐率以及高效的消息投递路由。


二、应用场景

1.系统集成
系统集成,除了可以通过接口,还可以通过消息。两者不同在于接口是模块间直接调用,而有消息中间件的系统模块间通过消息模块通信,通过消息分解系统。

2.降低系统耦合性
如果模块之间不存在直接调用,那么修改或新增模块对其他模块影响最小增加消息中间件后,业务模块仅需关注自己的业务逻辑和如何将消息发送给消息服务器消息由中间件存储和分发。B宕机不会影响A,B系统瓶颈也不会成为A的瓶颈也可以解决分布式事务问题。

扫描二维码关注公众号,回复: 1476799 查看本文章

直接接口调用存在的耦合(A调B):
对于A
1.存储要发送的消息,防止A或B宕机,信息丢失。
2.处理B的回调信息
对于B
1.设计接口通信协议,整合同构或异构的系统。
2.考虑系统的伸缩性,B的瓶颈会成为A的瓶颈,如何扩展。
3.保存回调消息,防止宕机造成消息丢失。
4.处理成功后通知A
在分布式事务中,通过本地事务和消息服务器的配合,保证数据最终一致性。


3.改善系统性能
使用消息的异步调用,用户请求的数据发送给消息队列后立即返回,不用等接受者处理好数据,系统具有更好的响应延迟。在网站访问的高峰,消息中间件有一定的缓冲作用,减轻数据库和后端存储的负载压力。

4.跨平台,降低网络协议的复杂性 


5.提高系统可用性
基于消息的通信是可靠的,消息不会丢失。可以发送事务性消息,而且大多数消息中间件都提供将消息持久化到磁盘的功能


引入消息中间件需要注意的地方

1.复杂性:消息中间件都是分布式的,引入分布式会大大增加系统复杂度,在不同主机、不同进程之间的调用和调试,会带来更多的不稳定性。分布式系统还会增加对外部系统的依赖。即使自己的系统没有问题,也可能会因为依赖系统出问题而导致系统不稳定。
2.异步调用:带来的业务交互的改变,有一定的操作延迟。
3. 同步调用:尽管消息中间件也可用于同步调用,但这并不是它的长项,同步调用可以考虑使用HTTP、NIO等其他方式。




 







猜你喜欢

转载自blog.csdn.net/dongnan591172113/article/details/56673070