业界主流的分布式消息队列与技术选型
原創
程序员铁蛋
2020-07-04 11:13
1. 分布式消息队列应用场景
- 服务解耦:系统之间、服务之间作出必要的隔离,这是业务层面的划分,然后采用消息队列进行通信
- 削峰填谷:比如说秒杀活动,如何对这个服务进行抗压,把流量的高峰和低谷的速率进行一个均衡,这是消息队列做的最核心的事情,就是说把消息缓存到一个地方,然后慢慢的去消费,这就是削峰填谷
- 异步化缓冲:有些业务逻辑允许异步操作,只要做到最终一致性即可
2. 分布式消息队列应用思考点
- 生产端的可靠性投递,保证这条消息不能丢失
- 消费端幂等,对于可能会重复的消息,如果都消费了,那数据肯定不一致的,所以消费端一定要做幂等性的验证
- 高可用、低延迟、可靠性,某个mq节点挂了,如何保证服务正常进行
3. 业界主流的分布式消息队列
- ActiveMQ:比较古老的mq,适用于中小型的系统,消息的并发和承载能力不够优秀,不适用于高并发、大流量的场景
- RabbitMQ: 目前比较热门的mq,可以满足于高并发、大流量的场景,但是横向扩展能力不是特别好
- RocketMQ: 阿里巴巴开源的mq,扩展性好,但是可维护性不是很好
- Kafka: 主要关注于高吞吐量的业务场景,扩展性好,但是可维护性不是很好