首先,rabbitMQ是一款開源,ERlang編寫的,基於AMQP協議的,消息中間件;
它可以做到:解耦、異步、削瘋限流;
掛機可能造成穩定性問題;加入系統的復雜性;
如何保證rabbitMQ的高可用,搭建集群;
如何做到重復消費:確保消息唯一性,做唯一標識;
然后,kafka是apache一款分布式發布訂閱消息系統。
它能做到緩沖和削峰、解耦、冗余。
區別:
從消息確認來說
rabbitMQ以brocker代理為中心,有消息確認機制;
kfka:以consumer為中心,沒有消息確認機制。
從批量處理來說
rabbitMQ支持事務,不支持批量操作,吞吐量小
Kafka:內部消息是可以做批量處理,消息處理效率高,吞吐量高
從負載均衡來說
rabbitMQ不支持負載均衡,需要loadbalance支持
kafka的采用zK來協調負載均衡問題,zk通過輪詢的方式發送消息到brocker上;