1. 使用場景:Kafka適合日志處理;RocketMQ適合業務處理
2. 性能:Kafka吞吐量更高,單機百萬/秒;RocketMQ單機10萬/秒。
因為Kafka一個topic有很多partition,代表很多目錄,每個目錄下有很多segment,每個代表一個消息文件,而RocketMQ存儲消息只有commitLog文件。所以Kafka可以並發寫,快於RocketMQ。但同樣的,當Topic增加,Kafka分區文件增多,文件刷盤時會競爭磁盤資源,而導致效率降低。
同時,生產者有一個發送消息的緩存隊列,客戶端發送后,放入緩存,立刻返回成功。當緩存隊列達到閾值,才真正發送給broker,此舉合並了多次請求,減少網絡IO,但增大消息丟失風險
3. 特殊消息:Kafka不支持定時,事務消息等
4. 支持隊列數:Kafka超過64個隊列(partition)性能下降嚴重,而RocketMQ最高支持5萬個隊列
參考: