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