Kafka和Rabbitmq的最大區別


功能上,兩者都是實現了AMQP協議。那么在使用上的最大區別是什么呢?如何根據自己的需求進行選型?

kafka是嚴格順序保證的消息隊列。即使在分布式環境下,也保證在同一分區內消息的順序性。既然是順序的,那么在同一個Topic下面,如果前面的消息沒有消費完畢(收到回應),則不能讀取下一條消息。那么在消費端,就變成了一個單線程操作,無法並發。雖然kafka可以通過分區實現並發,不過這個需要用多台kafka實現。

還有個辦法是在消費kafka消息的時候,消費完立即交給線程池處理,這樣可以極大提高並發性。不過這樣帶來的問題是,如果線程沒有處理完機器掛了,就會出現消息丟失的情況,需要在設計上考慮到。

Rabbitmq不承諾消息的順序性,因此可以並發多線程處理。在隊列中不必排隊。如果你對順序處理沒有要求,可以用Rabbitmq實現較大的並發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM