2017-02-10 37 views
33

我被要求評估RabbitMQ而不是卡夫卡,但發現很難找到一個比卡夫卡更好的理由。有誰知道在吞吐量,耐用性,延遲或易用性方面是否真的更好?是否有任何理由使用RabbitMQ而非Kafka?

+0

一件事要考慮的是,在Java之外的本地(比如捆綁並正式支持)向kafka說話非常困難。 RabbitMQ似乎還有其他官方支持的語言。 – Guillaume

+0

主要基於觀點,許多優秀的問題根據專家的經驗產生一定程度的意見,但對這個問題的回答往往幾乎完全基於意見,而不是事實,參考或具體的專業知識。 – VedX

+0

@Guillaume這不一定是真的。有許多用於Kafka的語言的客戶端:https://cwiki.apache.org/confluence/display/KAFKA/Clients此外,Confluent還提供許多其他語言的高性能開源Kafka客戶端。查看「Confluent Open Source」優惠:https://www.confluent.io/product/compare/ –

回答

66

RabbitMQ的是固體時,通用,支持多種協議,如AMQP,MQTT,STOMP等,它可以處理高通量和常見的用例爲它是處理後臺作業或之間消息代理消息代理微服務。 Kafka是針對高入口數據流而優化的消息總線並重播。

可以將卡夫卡視爲持久消息代理,其中應用程序可以處理和重新處理磁盤上的流式數據。卡夫卡有一個非常簡單的路由方法。如果您需要以複雜的方式將消息發送給消費者,RabbitMQ有更好的選擇。如果您需要支持可能處於脫機狀態的批量使用者或需要低延遲消息的使用者,請使用Kafka。

RabbitMQ將保留有關消費/確認/未確認消息的所有狀態,而Kafka則不會,它假定消費者保持跟蹤已消費的消息。 RabbitMQ的隊列空閒時速度最快,而Kafka保留大量數據並且開銷很小 - 卡夫卡用於保存和分發大量消息。 (如果您計劃在RabbitMQ中排隊很長,您可以看看lazy queues。)

Kafka是從頭開始考慮水平縮放,而 RabbitMQ主要是爲垂直縮放設計的。

RabbitMQ有一個用戶友好的界面,可以讓您從網絡瀏覽器監控並處理您的RabbitMQ服務器。除此之外,隊列,連接,通道,交換,用戶和用戶權限可以被處理 - 創建,刪除並在瀏覽器中列出,您可以手動監控消息速率和發送/接收消息。 Kafka經理還沒有像RabbitMQ Management界面那樣發達。我會說,對RabbitMQ有更好的理解會更容易/更快速。

更多的閱讀和一些對比數據可以在這裏找到:https://www.cloudkarafka.com/blog/2016-12-05-apachekafka-vs-rabbitmq.html

還建議行業紙:「卡夫卡與RabbitMQ的:兩個行業基準的比較研究發佈/訂閱的實現」:http://dl.acm.org/citation.cfm?id=3093908

+1

「高入門」是什麼意思? –

+2

在這種情況下,我想是'高吞吐量'。 – lawphotog

+3

高入口=高吞吐量攝取 – jbustamovej

相關問題