分布式消息中间件介绍
分布式消息中间件介绍
什么是消息中间件
:game_die:一个场景:
如果你是一个客户,在支付完一个订单之后,界面上会有一个等待圆圈,那这几秒让不让你烦躁呢?
:hammer_and_wrench:解决它:
解决这个问题的一大利器就是消息中间件,英文全称“Message Queue”,简称MQ
再没有引入消息中间件之前,系统A和系统B是同步通信的,但是在引入消息中间件之后,系统A和系统B就会变成异步通信。
-
系统A发送信息给mq后,就认为完成了自己的任务;然后系统B根据自己的情况,可能会在系统A投递小心到MQ之后的1秒,可能更久的时间去处理。
-
在异步调用的过程中,系统A仅仅是发个消息到MQ,至于系统B什么时候获取消息,有没有获取消息,系统A是不管的。
:ocean:你可以理解为一个中介,生产者只需要往MQ生产数据,消费者只管拿数据。
消息中间件的作用
解耦
传统模式的缺点:
系统间的耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,就很麻烦。
加入中间件模式的优点:
将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何改变。
异步
传统模式的缺点:
一些非必要的业务逻辑以同步的方式运行,太耗费时间。
中间件模式的优点:
将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。
削峰
传统模式的缺点:
并发量大的时候,所有的请求直接怼到数据库,库不堪其忧,客也不得乐。
加入中间件模式的优点:
系统A慢慢的按照数据库能处理的并发量,从消息队列中取出消息。在生产中,这个短暂的高峰期积压也是被允许的。
消息中间件的应用场景和案例
- 异步解耦:
系统间请求异步解耦,通过消息堆积与高性能特性,实现平台削峰。
- 事件通知
通过消息广播,高效的吧分布式应用联系起来。
-
数据复制
通过消息将数据分发到多个系统进行处理
-
日志处理
高效的异步同步日志,进而实时或离线进行分析。
- 点赞
- 收藏
- 关注作者
评论(0)