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語言編寫。
