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