01、RocketMQ 实战 - 应用场景和优缺点
应用场景及其优缺点
应用场景
应用解耦
- 系统耦合性越高,容错性越低,如果都是直线操作,其中一个部位出问题,整个流程都走不下去
- 如果使用mq,即使其中流程的一部分出问题,只要mq里面数据还在.等到流程恢复的时候,就可以重新走属于自己的一部分,
而不会导致其他流程的部分也阻塞
流量削峰
- 如果每次访问都是直接连接到应用上的话,服务器的上限就需要根据最大的访问量来设置,而最大的访问量不会一直存在,也就是说
这个服务器的性能大部分都是浪费的 - 而请求先到mq,然后应用再到mq中去拿的话,就能大大缓解服务器的压力,就算访问量再大,只要不大得过mq的保存上限即可,应用可以
慢慢从mq取出来走自己的流程
数据分发
- 如果好几个模块都需要消费a模块的消息,突然加了一个模块要加的话,a模块就需要改代码,对接到新加的模块
- 如果使用mq的话,则a模块只需要对接mq即可,至于新加的模块只需要去mq取即可,不需要再和a模块直接对接了
优缺点
-
优点:解耦,流量削峰,数据分发
-
缺点:
-
系统可用性降低,mq宕机影响的业务会很多,所有mq需要高可用
-
系统复杂性提高,通过mq调用,怎么保证数据顺序,不重复消费,怎么保证不丢失数据
-
一致性消息,如果应用解耦的情况,流程中的一个部分失败了,如何保证数据一致性
https://help.aliyun.com/document_detail/29553.html?spm=a2c4g.11186623.6.573.7bdf7acfZvXLPj