rabbitmq和kafka的區別

2022-09-06 04:54:08 字數 1338 閱讀 1304

1、吞吐量

kafka吞吐量更高:

1)zero copy機制,核心copy資料直接copy到網路裝置,不必經過核心到使用者再到核心的copy,減小了copy次數和上下文切換次數,大大提高了效率。

2)磁碟順序讀寫,減少了尋道等待的時間。

3)批量處理機制,服務端批量儲存,客戶端主動批量pull資料,訊息處理效率高。

4)儲存具有o(1)的複雜度,讀物因為分割槽和segment,是o(log(n))的複雜度。

5)分割槽機制,有助於提高吞吐量。

2、可靠性

rabbitmq可靠性更好:

1)確認機制(生產者和exchange,消費者和佇列);

2)支援事務,但會造成阻塞;

3)委託(新增**來處理傳送失敗的訊息)和備份交換器(將傳送失敗的訊息存下來後面再處理)機制;

3、高可用

1)rabbitmq採用mirror queue,即主從模式,資料是非同步同步的,當訊息過來,主從全部寫完後,回ack,這樣保障了資料的一致性。

2)每個分割槽都可以有乙個或多個副本,這些副本儲存在不同的broker上,broker資訊儲存在zookeeper上,當broker不可用會重新選舉leader。

kafka支援同步負責訊息和非同步同步訊息(有丟訊息的可能),生產者從zk獲取leader資訊,發訊息給leader,follower從leader pull資料然後回ack給leader。

4、負責均衡

1)kafka通過zk和分割槽機制實現:zk記錄broker資訊,生產者可以獲取到並通過策略完成負載均衡;通過分割槽,投遞訊息到不同分割槽,消費者通過服務組完成均衡消費。

2)需要外部支援。

5、模型

1)rabbitmq:

producer,broker遵循amqp(exchange,bind,queue),consumer;

broker為中心,exchange分topic,direct,fanout和header,路由模式適合多種場景;

consumer消費位置由broker通過確認機制儲存;

2)kafka:

producer,broker,consumer,未遵循amqp;

consumer為中心,獲取訊息模式由consumer自己決定;

offset儲存在消費者這邊,broker無狀態;

訊息是名義上的永久儲存,每個parttition按segment儲存自己的訊息為檔案(可配置清理週期);

consumer可以通過重置offset消費歷史訊息;

需要繫結zk;

RabbitMQ和kafka的區別

rabbitmq遵循amqp協議,rabbitmq的broker由exchange,binding,queue組成,其中exchange和binding組成了訊息的路由鍵 客戶端producer通過連線channel和server進行通訊,consumer從queue獲取訊息進行消費 長連線,que...

RabbitMQ和kafka的區別

一 語言不同 rabbitmq是由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。kafka是採用scala語言開發,它主要用於處理活躍的流式資料,大資料量的資料處理上 二 結構不同 rabbitmq採用amqp advanced message queuing pro...

kafka和RabbitMQ的區別

1.應用場景方面 rabbitmq 用於實時的,對可靠性要求較高的訊息傳遞上。kafka 用於處於活躍的流式資料,大資料量的資料處理上。2.語言方面 rabbitmq是由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的訊息傳遞上。kafka是採用scala語言開發,它主要用於處理活...