消息隊列架構是如何演變的?
IBM MQ -> RabbitMQ -> Kafka ->Pulsar, 消息隊列架構是如何演變的?
下圖顯示了架構比較。
1.IBM MQ
IBM MQ 于 1993 年推出。它最初稱為 MQSeries,2002 年更名為 WebSphere MQ。2014 年更名為 IBM MQ。IBM MQ 是一款非常成功的產品,廣泛應用于金融領域。其收入在 2020 年仍達到 10 億美元。
隊列管理器是消息隊列的邏輯容器。它通過消息通道向其他隊列管理器傳輸數據。隊列存儲消息。消息是待傳輸數據的抽象概念。消息頭包含路由、存儲和交付信息。
2. RabbitMQ
2003 年,金融行業的多家機構希望開發一種標準化的消息傳遞協議,于是 AMQP(高級消息隊列協議)在摩根大通誕生了。與在 API 層面標準化的 JMS(Java 消息傳遞服務)不同,AMQP 是一種線層面的協議,這意味著它指定了要傳輸的數據格式。作為 AMQP 的實現之一,RabbitMQ 由 Rabbit Technologies 于 2007 年開發,后被 VMWare 收購。
RabbitMQ 架構不同于 IBM MQ,更類似于 Kafka 概念。生產者向指定交換類型的交換發布消息。它可以是直接、主題或扇出。然后,交換中心根據不同的消息屬性和交換類型將消息路由到隊列中。消費者據此接收信息。
3. Kafka
2011 年初,LinkedIn 開源了 Kafka,這是一個分布式事件流平臺。它以弗朗茨-卡夫卡(Franz Kafka)的名字命名。顧名思義,Kafka 是為寫而優化的。它為處理實時數據饋送提供了一個高吞吐量、低延遲的平臺。它提供了一個統一的事件日志來實現事件流,在互聯網公司中得到廣泛應用。
Kafka 定義了生產者、經紀人、主題、分區和消費者。它的簡單性和容錯性使其能夠取代以前的產品,如基于 AMQP 的消息隊列。
4. Pulsar
Pulsar 最初由雅虎開發,是一個一體化的消息和流平臺。與 Kafka 相比,Pulsar 融合了其他產品的許多有用功能。此外,Pulsar 的架構更加原生云化,在集群擴展和分區遷移等方面提供了更好的支持。
Pulsar 架構分為兩層:服務層和持久層。Pulsar 本身支持分層存儲,我們可以利用 AWS S3 等更便宜的對象存儲來長期持久化消息。