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