推送消息為什么使用RocketMQ,而不使用Kafka?


Kafka一般適用日志傳輸,而RocketMQ適用非日志的可靠性傳輸(日志傳輸也可以)。接下來我們將討論它倆區別,你們就知道哪種情況用RocketMQ。其實,RocketMQ是阿里開發的,大家都知道,阿里的淘寶非常強,所以這個是對網上商城非常方便。

數據可靠性

  • RocketMQ支持異步實時刷盤,同步刷盤,同步Replication,異步Replication
  • Kafka只支持異步刷盤,異步Replication

RocketMQ的同步刷盤在單機可靠性比Kafka高,不會因為操作系統崩潰,導致數據丟失。同步Replication比異步Replication可靠,數據完全無單點。Kafka在主機宕機,備機自動切換,由於異步Replication導致數據丟失。如果主機重啟,與現在的主機產生數據沖突。

性能     

  • Kafka的TPS高,不穩定

KafkaTPS高因為producer將多個消息合並,批量發向broker。這里會有一些問題,緩存過多消息,gc是個問題;producer發送消息到broker,向業務返回成功,但是producer宕機,導致消息丟失;producer分布式系統,且每台機器是多線程發送,單個producer產生的數據量有限;發送消息單一功能,緩存可由上層業務完成。

單機支持的隊列數

  • Kafka單機超過64個隊列,發送消息響應時間隨着隊列越多越長
  • RocketMQ單機支持最高5萬個隊列,Load不會明顯變化

實時性

  • Kafka短輪詢,實時性取決輪詢間隔時間
  • RocketMQ長輪詢,消息投遞延時通常在幾毫秒

失敗重試

  •  Kafka消費失敗不支持重試
  • RocketMQ消費失敗支持定時重試,每次重試間隔時間順延

消息順序

  • Kafka消息順序,broker宕機,產生消息亂序
  • RocketMQ消息順序,broker宕機,不會亂序

定時消息

  • Kafka不支持
  • RocketMQ支持,指定毫秒級別的延時時間

分布式式事物

  • Kafka不支持
  • RocketMQ支持

消息查詢

  • Kafka不支持
  • RocketMQ支持根據message id和消息內容查詢

消息回溯

  • Kafka理論支持
  • RocketMQ按照時間支持,精確到毫秒

消費並行度

  • Kafka消費並行度與分區數一致
  • RocketMQ順序消費和Kafka一樣,亂序取決consumer的線程數

消息軌跡

  • Kafka不支持
  • RocketMQ支持

broker消息過濾

  • Kafka不支持
  • RocketMQ根據message tag或者任意形式過濾

其它方面,比如Kafka消息堆積比RocketMQ強,更成熟,而RocketMQ java語言編寫。


免責聲明!

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



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