RocketMQ详解入门到实战总结(一)
1、为什么要使用RocketMQ
RocketMQ是一款分布式、队列模型的消息中间件,支持严格的消息顺序,优点:
应用解耦:如果系统A、系统B、系统C,都直接依赖于系统X,那么系统之间的耦合度就非常高;如果在系统X之前加上RocketMQ,就实现了系统之间的解耦。
流量削峰:如果用户的每次访问都是直接连接到应用上的话,服务器的承受的访问压力就会非常大,达到服务器的承受上限时就可能会崩溃,同时对服务器的性能也是很大的浪费, 而如果把请求先到MQ,然后应用再到MQ中去拿的话,就能大大缓解服务器的压力,就算访问量再大,只要不大得过MQ的保存上限,应用就能很好的处理用户的请求。
消息分发:如如果好几个模块都需要消费X模块的消息,突然加了一个模块D要加的话,X模块就需要改代码,对接到新加的模块,如果使用MQ的话,则D模块只需要对接MQ即可,至于新加的模块只需要去MQ取即可,不需要再和X模块直接对接了
使用RocketMQ的缺点:
- 系统可用性降低,MQ宕机影响的业务会很多,所有mq需要高可用
- 系统复杂性提高,通过mq调用,怎么保证数据顺序,不重复消费,怎么保证不丢失数据
- 一致性消息,如果应用解耦的情况,流程中的一个部分失败了,如何保证数据一致性
- 消息重复问题,它不能保证不重复,只能保证正常情况下不重复
- 不支持分布式事务
- 消息过滤功能扩展比较单一