天天看點

中間件-幾種常見的消息機制Kafka與RabbitMQ、RocketMQ的定義

Kafka是LinkedIn開源的分布式釋出-訂閱消息系統,目前歸屬于Apache定級項目。Kafka主要特點是基于Pull的模式來處理消息消費,追求高吞吐量,一開始的目的就是用于日志收集和傳輸。0.8版本開始支援複制,不支援事務,對消息的重複、丢失、錯誤沒有嚴格要求,适合産生大量資料的網際網路服務的資料收集業務。

RabbitMQ是使用Erlang語言開發的開源消息隊列系統,基于AMQP協定來實作。AMQP的主要特征是面向消息、隊列、路由(包括點對點和釋出/訂閱)、可靠性、安全。AMQP協定更多用在企業系統内,對資料一緻性、穩定性和可靠性要求很高的場景,對性能和吞吐量的要求還在其次。

RocketMQ是阿裡開源的消息中間件,它是純Java開發,具有高吞吐量、高可用性、适合大規模分布式系統應用的特點。RocketMQ思路起源于Kafka,但并不是Kafka的一個Copy,它對消息的可靠傳輸及事務性做了優化,目前在阿裡集團被廣泛應用于交易、充值、流計算、消息推送、日志流式處理、binglog分發等場景。