1.Kafka
? ? ? ? Kafka是LinkedIn開源的分布式發(fā)布-訂閱消息系統(tǒng),目前歸屬于Apache頂級項目傅蹂。Kafka主要特點是基于Pull的模式來處理消息消費,追求高吞吐量佃乘,一開始的目的就是用于日志收集和傳輸。0.8版本開始支持復(fù)制驹尼,不支持事務(wù)趣避,對消息的重復(fù),丟失新翎,錯誤沒有嚴(yán)格要求程帕,適用大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù)。一般應(yīng)用在大數(shù)據(jù)日志處理或?qū)崟r性(少量延遲)地啰,可靠性(少量丟數(shù)據(jù))要求較低的場景使用愁拭,比如ELK日志收集。
2.RabbitMQ
? ? ? ? RabbitMQ是使用Erlang語言開發(fā)的開源消息隊列系統(tǒng)亏吝,基于AMQP協(xié)議來實現(xiàn)岭埠。
? ? ? ? AMQP的主要特征是面向消息,隊列,路由(包括點對點發(fā)布/訂閱)枫攀,可靠性括饶,安全。AMQP協(xié)議更多在企業(yè)系統(tǒng)對數(shù)據(jù)一致性来涨,穩(wěn)定性和可靠性要求很高的場景图焰,對性能和吞吐量的要求還在其次。RabbitMQ比Kafka可靠蹦掐。
3.RocketMQ
? ? ? ? RocketMQ是阿里開源的消息中間件技羔,它是純java開發(fā),具有高吞吐量卧抗,高可用性藤滥,適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點。RocketMQ思路起源于Kafka,但并不是Kafka的一個copy,他對消息的可靠傳輸和事務(wù)性做了優(yōu)化社裆,目前在阿里集群被廣泛應(yīng)用于交易拙绊,充值,流計算泳秀,消息推送标沪,日志流式處理,binlog分發(fā)等場景嗜傅。