1.應用場景方面
RabbitMQ:用於實時的,對可靠性要求較高的消息傳遞上。
kafka:用於處於活躍的流式數據,大數據量的數據處理上。
2.架構模型方面
producer,broker,consumer
RabbitMQ:以broker為中心,有消息的確認機制
kafka:以consumer為中心,無消息的確認機制
3.吞吐量方面
RabbitMQ:支持消息的可靠的傳遞,支持事務,不支持批量操作,基於存儲的可靠性的要求存儲可以採用內存或硬盤,吞吐量小。
kafka:內部採用消息的批量處理,數據的存儲和獲取是本地磁盤順序批量操作,消息處理的效率高,吞吐量高。
4.集群負載均衡方面
RabbitMQ:本身不支持負載均衡,需要loadbalancer的支持
kafka:採用zookeeper對集群中的broker,consumer進行管理,可以註冊topic到zookeeper上,通過zookeeper的協調機制,producer保存對應的topic的broker信息,可以隨機或者輪詢發送到broker上,producer可以基於語義指定分片,消息發送到broker的某個分片上。
1.應用場景方面
RabbitMQ:用於實時的,對可靠性要求較高的消息傳遞上。
kafka:用於處於活躍的流式數據,大數據量的數據處理上。
2.架構模型方面
producer,broker,consumer
RabbitMQ:以broker為中心,有消息的確認機制
kafka:以consumer為中心,無消息的確認機制
3.吞吐量方面
RabbitMQ:支持消息的可靠的傳遞,支持事務,不支持批量操作,基於存儲的可靠性的要求存儲可以採用內存或硬盤,吞吐量小。
kafka:內部採用消息的批量處理,數據的存儲和獲取是本地磁盤順序批量操作,消息處理的效率高,吞吐量高。
4.集群負載均衡方面
RabbitMQ:本身不支持負載均衡,需要loadbalancer的支持
kafka:採用zookeeper對集群中的broker,consumer進行管理,可以註冊topic到zookeeper上,通過zookeeper的協調機制,producer保存對應的topic的broker信息,可以隨機或者輪詢發送到broker上,producer可以基於語義指定分片,消息發送到broker的某個分片上。