1. 程式人生 > >訊息佇列MQ選型 - Kafka、RabbitMQ對比

訊息佇列MQ選型 - Kafka、RabbitMQ對比

image.png

適應場景

非同步處理,應用解耦,流量削鋒和訊息通訊

對比

feature scenario Kafka RabbitMQ 備註
PUB-SUB 釋出訂閱模型  
推拉消費 Consumer消費訊息的動作方式。 pull push/pull push更關注實時性。pull更關注消費者消費能力。
延遲消費 Producer產生一條訊息後,並不希望立刻被消費掉。 X 高階需求。
consumer group 同一條Message能同時被多個消費組消費,但同一group中,一條Message只會被一個consumer消費 KAFKA: 不需要在管理平臺配置。 RabbitMQ:增加需要配置,涉及到內部資料冗餘。
訊息tag(filter) 以過濾出tag為keyword的message X X
訊息回溯 從歷史中的某個位置重新拉取訊息 X X 只對拉模式,推模式不考慮回溯,支援時間維度offset
事務性 mq內部邏輯,訊息狀態是否一致 X 和訊息中介軟體內部實現相關。
優先順序 訊息優先順序,consumer優先消費高優先順序訊息。 X
染色 追蹤訊息在mq中的具體耗時 X X
本地讀優化 Producer\Consumer 不在同一機房。MQ搭建在P端,C端會存在跨機房訪問的問題。 X X 使用資料同步工具,將P所在機房資料同步到C所在機房的叢集。
doubt message(訊息追蹤) 跨公司,異構系統間,訊息狀態追蹤。 X X
訊息積壓 沒有被消費的訊息在MQ中堆積 支援程度的區別,不同mq會存在不同。
負載均衡 1:防止單點 2:C端壓力LB在MQ各節點上。 RMQ:多叢集做負載
支援的訊息大小 每條訊息的大小 無限制 無限制 需要對訊息大小做限制,降低系統不確定性。
定期回收訊息 mq中的訊息一旦被消費後,可以被刪除,空間回收。
消費語義 方式分別為:1、最多消費一次 2、最少消費一次3、僅消費一次 2 2 業務方消費端做冪等
對全域性序支援 訊息在全域性保持時序一致 X X 設計複雜度原因,不考慮支援

備註:
“√” 表示目前系統已主持
“X” 表示系統不考慮支援該特性