RocketMQ、kafka、rabbitMQ不完全對比

RocketMQ、Kafka、RabbitMQ不完全對比

產品組件(組成)

產品 組件 組件 組件 組件 組件 組件 組件
Rocket MQ p(producer) c(consumer) brocker(支持pull和push,支持順序行消費) NameServer(服務發現和服務路由,記錄路由信息) CommitLog(消息持久化存儲) Consumer Queue(存儲的是在CommitLog中的偏移量延遲隊列)
Kafak p(producer) c(consumer) brocker(存儲message) zk(管理p/c/broker的註冊) topic(邏輯概念)
Rabbit MQ p(producer) c(consumer) exchanger(P與ex直連,通過p的ROUTING_KEY進行消息路由,將消息發送給queue,可以持久化) Queue(與消費者直連,可持久化) Binding(exchange與queue的綁定規則) Routing Key(exchange據此路由消息) vhost

產品特性

產品 隊列優先級 隊列重試 消費方式 廣播模式 持久化 跨語言 順序 事務 性能 定時
Rocket MQ 支持 支持 pull+push 支持 支持 Java, C++, Go,對java最友好 支持 支持 支持
Kafka 不支持 不支持 pull 支持 支持 java編寫,支持多語言 單個分區消息有序 支持 最高 不支持
Rabbit MQ 支持 支持 pull+push 支持 支持 Erlang編寫,支持多語言 可以認爲不支持 支持 支持

關於性能

諮詢了下朋友kafaka性能搞的原因主要是Kafka的在producer端將多個小消息合併,發送到broker中,還有個重要的原因是做到零拷貝,無需CPU拷貝。還有一些其他原因如kafaka利用partition實現並行處理,最大併發度等於partition的數量。
RocketMQ沒有做消息合併主要考慮到java gc的問題,還有就是消息合併發送萬一出現down機,丟失消息也比不合並出現的問題大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章