業界對於訊息的傳遞有多種方案和產品,本文就比較有代表性的兩個mq(rabbitmq,kafka)進行闡述和做簡單的對比。
rabbitmq,遵循amqp協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。譬如,重要業務資料處理上。
kafka是linkedin於2023年12月份開源的訊息發布訂閱系統,它主要用於處理活躍的流式資料,大資料量的資料處理上;kafka的吞吐量比較大,但是會出現丟訊息的情況,故不建議用在重要業務資料處理上,可以用在 譬如輸出日誌上等。
rabbitmq遵循amqp協議,rabbitmq的broker由exchange,binding,queue組成,其中exchange和binding組成了訊息的路由鍵;客戶端producer通過連線channel和server進行通訊,consumer從queue獲取訊息進行消費(長連線,queue有訊息會推送到consumer端,consumer迴圈從輸入流讀取資料)。rabbitmq以broker為中心;有訊息的確認機制。
kafka遵從一般的mq結構,producer,broker,consumer,以consumer為中心,訊息的消費資訊儲存的客戶端consumer上,consumer根據消費的點,從broker上批量pull資料;無訊息確認機制。
kafka具有高的吞吐量,內部採用訊息的批量處理,zero-copy機制,資料的儲存和獲取是本地磁碟順序批量操作,具有o(1)的複雜度,訊息處理的效率很高。
rabbitmq在吞吐量方面稍遜於kafka,他們的出發點不一樣,rabbitmq支援對訊息的可靠的傳遞,支援事務,不支援批量的操作;基於儲存的可靠性的要求儲存可以採用記憶體或者硬碟。
rabbitmq支援miror的queue,主queue失效,miror queue接管。
kafka的broker支援主備模式。
kafka採用zookeeper對集群中的broker、consumer進行管理,可以註冊topic到zookeeper上;通過zookeeper的協調機制,producer儲存對應topic的broker資訊,可以隨機或者輪詢傳送到broker上;並且producer可以基於語義指定分片,訊息傳送到broker的某分片上。
rabbitmq的負載均衡需要單獨的loadbalancer進行支援。
原文:
RabbitMQ和kafka從幾個角度簡單的對比
業界對於訊息的傳遞有多種方案和產品,本文就比較有代表性的兩個mq rabbitmq,kafka 進行闡述和做簡單的對比,在應用場景方面,rabbitmq,遵循amqp協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。kafka是linkedin於2010年12月份...
RabbitMQ和kafka從幾個角度簡單的對比
業界對於訊息的傳遞有多種方案和產品,本文就比較有代表性的兩個mq rabbitmq,kafka 進行闡述和做簡單的對比,在應用場景方面,rabbitmq,遵循amqp協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。kafka是linkedin於2010年12月份...
RabbitMQ和kafka從幾個角度簡單的對比
業界對於訊息的傳遞有多種方案和產品,本文就比較有代表性的兩個mq rabbitmq,kafka 進行闡述和做簡單的對比,在應用場景方面,rabbitmq,遵循amqp協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。kafka是linkedin於2010年12月份...