業界主流的分佈式消息隊列與技術選型
原創
程序员铁蛋
2020-07-04 11:13
1. 分佈式消息隊列應用場景
- 服務解耦:系統之間、服務之間作出必要的隔離,這是業務層面的劃分,然後採用消息隊列進行通信
- 削峯填谷:比如說秒殺活動,如何對這個服務進行抗壓,把流量的高峯和低谷的速率進行一個均衡,這是消息隊列做的最核心的事情,就是說把消息緩存到一個地方,然後慢慢的去消費,這就是削峯填谷
- 異步化緩衝:有些業務邏輯允許異步操作,只要做到最終一致性即可
2. 分佈式消息隊列應用思考點
- 生產端的可靠性投遞,保證這條消息不能丟失
- 消費端冪等,對於可能會重複的消息,如果都消費了,那數據肯定不一致的,所以消費端一定要做冪等性的驗證
- 高可用、低延遲、可靠性,某個mq節點掛了,如何保證服務正常進行
3. 業界主流的分佈式消息隊列
- ActiveMQ:比較古老的mq,適用於中小型的系統,消息的併發和承載能力不夠優秀,不適用於高併發、大流量的場景
- RabbitMQ: 目前比較熱門的mq,可以滿足於高併發、大流量的場景,但是橫向擴展能力不是特別好
- RocketMQ: 阿里巴巴開源的mq,擴展性好,但是可維護性不是很好
- Kafka: 主要關注於高吞吐量的業務場景,擴展性好,但是可維護性不是很好