爲什麼選擇RocketMQ,而不是Kafka

一個複雜的分佈式系統,必然會考慮使用MQ來解決通訊解耦等問題,市面上開源的MQ越來越多,也讓選擇變得越來越難,比如Kafka,RabbitMQ,RocketMQ,讓人看得眼花繚亂,好像每個MQ都很強大,究竟使用哪個真是無從下手;而在一次技術選型中,我們落地了RocketMQ,而不是Kafka或者其他,以下也對這次選擇做一次總結,講述以下RocketMQ和Kafka的比較。

性能

在性能方面,Kafka是優於RocketMQ的,可以達到幾十萬的TPS,而RocketMQ很難超過10W TPS,但是這是有提前的,提前就是Kafka的Topic或者Partition不能過多(最好不要超過64個),這是因爲Kafka之所以可以高性能是因爲採用了順序寫,但如果一旦Topic或者Partition變多,則變成不斷的寫多個文件相當於隨機寫,所以性能開始大幅度下降;而RocketMQ則幾乎沒有這個問題,及時在Topic很多的(官方說可以支持5W),也不會出現明顯的性能下降,所以在需要使用很多Topic的場景下,可以選擇RocketMQ,且上萬的TPS也是不錯的性能表現。

可靠性

可靠性方面,RocketMQ由於支持主從雙同步刷盤機制,所以要強於Kafka的異步刷盤機制,雖然性能會下降,但是如果你對可靠性要求很高,推薦使用;當然如果你只是發送一些不可靠消息,如給用戶發個通知,發個短信等,則不推薦使用同步刷盤,就算選擇使用RocketMQ,也可以使用異步刷盤即可。

特性

RocketMQ有很多豐富的特性,如自動消息重試,延時消息等,比如我們使用自動消息重試和[ 一次分佈式任務冪等處理的探索 ]來實現失敗任務的自動重試。

總結

世界上沒有銀彈,在中間件的選擇上也是如此,只有最合適的沒有最好的,揚長避短完成架構設計纔是最正確的選擇!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章