RocketMQ和Kafka區別
1)適用場景
Kafka適合日志處理
RocketMQ適合業務處理
結論:平手,根據具體業務定奪
2)性能
kafka單機寫入TPS號稱在百萬條/秒;
RocketMQ大約在10萬條/秒;
結論:追求性能的話,kafka單機性能更高
3)可靠性
RocketMQ支持異步/同步刷盤;異步/同步 Replication;
Kafka使用異步刷盤方式,異步Replication;
結論:RocketMQ所支持的同步方式提升了數據的可靠性。
4)實時性
均支持pull長輪詢,RocketMQ消息實時性更好
結論:RocketMQ勝出。
5)支持的隊列數
Kafka單機超過64個隊列/分區,消息發送性能降低嚴重;
RocketMQ單機支持最高5萬個隊列,性能穩定;
結論:長遠來看,RocketMQ勝出,這也是適合業務處理的原因之一
6)消息順序性
Kafka某些配置下,支持消息順序,但是一台Broker宕機后,就會產生消息亂序;
RocketMQ支持嚴格的消息順序,在順序消費場景下,一台Broker宕機后,發送消息會失敗,但是不會亂序。
結論:RocketMQ勝出
7)消費失敗重試機制
Kafka消費失敗不支持重試
RocketMQ消費失敗支持定時重試,每次重試間隔時間順延
8)定時/延時消息
Kafka不支持定時消息;
RocketMQ支持定時消息
9)分布式事務消息
Kafka不支持分布式事務消息
RocketMQ支持分布式事務消息
10)消息查詢機制
Kafka不支持消息查詢
RocketMQ支持根據Message Id查詢消息,也支持根據消息內容查詢消息
11)消息回溯
Kafka理論上可以按照Offset來回溯消息
RocketMQ支持按照時間來回溯消息,精度毫秒,例如從一天之前的某分某秒開始重新消費消息
RocketMQ誕生的場景
1)Kafka的業務應用場景主要定位於日志傳輸;對於復雜業務支持不夠。
2)RocketMQ具有數據可靠性、數據實時性、消息隊列的個數更多等特點;更符合業務嚴謹的項目。
3)Kafka針對的是海量數據的場景,但是對數據的正確性要求不是特別嚴格。但是像關於交易等對數據的正確性要求特別高的,Kafka不是特別適合
