0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

消息隊列的發(fā)展歷史

小林coding ? 來源:ByteByteGo ? 2023-10-30 10:49 ? 次閱讀

上一篇我們用一個秒殺案例探討了我們?yōu)槭裁葱枰㈥犃?。今天我們來回顧一下消息隊列的發(fā)展歷史。

下圖列出了過去 30 年中消息隊列的發(fā)展簡史。

我們來依次介紹一下這些產(chǎn)品。

IBM MQ

IBM MQ 于 1993 年推出。它最初稱為 MQSeries,2002 年更名為 WebSphere MQ。2014 年更名為 IBM MQ。IBM MQ 是一款非常成功的產(chǎn)品,廣泛應(yīng)用于金融領(lǐng)域。到 2020 年,其收入仍將達到 10 億美元。下圖顯示了 IBM MQ 的關(guān)鍵架構(gòu)。

隊列管理器(Queue Manager)是消息隊列的邏輯容器。它通過消息通道(channel)向其他隊列管理器傳輸數(shù)據(jù)。傳輸?shù)臄?shù)據(jù)抽象為“消息”這個概念。隊列用來存儲消息。消息頭包含路由信息、存儲方式和傳遞目標信息。

2910453c-74bd-11ee-939d-92fbcf53809c.png

還有其他一些非開源消息隊列,如 MSMQ(1997 年)和 SQS(2004 年),它們都在各自的生態(tài)系統(tǒng)中發(fā)揮了很好的作用。

RabbitMQ

2003 年,多家金融機構(gòu)希望開發(fā)一種標準化的消息傳遞協(xié)議,于是 AMQP(Advanced Message Queuing Protocol)在摩根大通誕生了。與在 API 層面標準化的 JMS(Java Messaging Service)不同,AMQP 是一種 wire level 的協(xié)議,這意味著它規(guī)定了要傳輸?shù)臄?shù)據(jù)格式。作為 AMQP 的一種實現(xiàn),RabbitMQ 由 Rabbit Technologies 于 2007 年開發(fā),后被 VMWare 收購。

下圖是 RabbitMQ 的架構(gòu)。我們可以看到,它與 IBM MQ 不同,更類似于 Kafka 的架構(gòu)概念。生產(chǎn)者向交換中心發(fā)布消息。它可以是直接交換、基于主題交換或扇出。然后,交換中心根據(jù)不同的消息屬性和交換類型將消息路由到隊列中。消費者據(jù)此接收信息。

29179990-74bd-11ee-939d-92fbcf53809c.png

雖然 RabbitMQ 擁有很多現(xiàn)代消息隊列概念,但它是近 20 年前開發(fā)的。當時的分布式系統(tǒng)還不像現(xiàn)在這樣成熟,因此該架構(gòu)在處理大流量和大量并發(fā)請求的場景時受到了限制。

Kafka

2011 年初,LinkedIn 開源了分布式事件流平臺 Kafka。它以作家 Franz Kafka 的名字命名。顧名思義,Kafka 是為寫而優(yōu)化的。它為處理實時數(shù)據(jù)流提供了一個高吞吐量、低時延的平臺。它提供了一個統(tǒng)一的事件日志(event log)來實現(xiàn)事件流,在互聯(lián)網(wǎng)公司中得到廣泛應(yīng)用。下圖是簡化的 Kafka 架構(gòu)。

總的來說,Kafka 定義了生產(chǎn)者、消息代理、訂閱主題、分區(qū)和消費者。Kafka 的簡單性和容錯性使其能夠取代以前的產(chǎn)品,如基于 AMQP 的消息隊列。

292ef7ac-74bd-11ee-939d-92fbcf53809c.png

Pulsar

Pulsar 最初由雅虎開發(fā),是一個一體化的消息平臺和流平臺。與 Kafka 相比,Pulsar 融合了其他產(chǎn)品的許多實用功能,支持的功能范圍更廣。此外,Pulsar 的架構(gòu)更具云原生性,可為集群擴展和分區(qū)遷移等提供更好的支持。下圖顯示了 Pulsar 架構(gòu)的簡化版本。

與 Kafka 類似,Pulsar 也有訂閱主題的概念,其 URI 看起來是這樣的

{type}://{tenant}/{namespace}/{topic}

值得注意的是,URI 中有一個租戶元素,這意味著 Pulsar 支持多租戶環(huán)境。

Pulsar 還支持持久化或非持久化的訂閱主題。持久化主題在磁盤上持久存在,而非持久化主題則駐留在內(nèi)存中,一旦發(fā)生故障可能會丟失。

Pulsar 架構(gòu)分為兩層:服務(wù)層和持久層。服務(wù)層由多個消息代理組成,負責(zé)處理傳入和傳出的信息。服務(wù)層是無狀態(tài)的,它利用 Apache BookKeeper 來存儲信息。

另一個有趣的設(shè)計是,Pulsar 原生支持分層存儲,我們可以用 AWS S3 等更便宜的對象存儲來長期持久地保存消息。

2944bf4c-74bd-11ee-939d-92fbcf53809c.png

總結(jié)一下,消息隊列的發(fā)展從一開始的消息傳遞中間件演進為流處理。現(xiàn)代消息隊列通常將這兩種功能結(jié)合在一起,并支持分布式環(huán)境中的容錯。我們用下圖來結(jié)束今天的日拱一卒:每種流行產(chǎn)品的誕生都改變了消息隊列的編程范式,并解決了業(yè)務(wù)痛點。

294c4b86-74bd-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IBM
    IBM
    +關(guān)注

    關(guān)注

    3

    文章

    1809

    瀏覽量

    75488
  • 管理器
    +關(guān)注

    關(guān)注

    0

    文章

    252

    瀏覽量

    18943
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3618

    瀏覽量

    43503
  • 消息隊列
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    3087

原文標題:面試官:消息隊列是怎么演進的?

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    RTOS發(fā)展歷史

    RTOS發(fā)展歷史  從1981年Ready System發(fā)展了世界上第1個商業(yè)嵌入式實時內(nèi)核(VRTX32),到今天已經(jīng)有近20年的歷史。20世紀80年代的產(chǎn)品還只支持一些16位的微處
    發(fā)表于 08-15 11:32

    操作系統(tǒng)發(fā)展歷史

    操作系統(tǒng)發(fā)展歷史  下面我們結(jié)合計算機的發(fā)展歷史來回顧一下操作系統(tǒng)的發(fā)展歷程?! ?.第一代計算機(1945-1955):真空管和插件板  
    發(fā)表于 09-13 10:10

    FPGA技術(shù)的發(fā)展歷史和動向

    本文關(guān)鍵字:fpga技術(shù),fpga發(fā)展, fpga培訓(xùn),F(xiàn)PGA應(yīng)用開發(fā)入門與典型實例 一、FPGA技術(shù)的發(fā)展歷史 縱觀數(shù)字集成電路的發(fā)展歷史
    發(fā)表于 08-08 10:24

    Protel的發(fā)展歷史及Protel99特性

    Protel的發(fā)展歷史及Protel99特性
    發(fā)表于 04-23 22:38

    嵌入式系統(tǒng)的發(fā)展歷史

    摘要:嵌入式系統(tǒng)誕生于微型機時代,經(jīng)歷了漫長的獨立發(fā)展的單片機道路。給嵌入式系統(tǒng)尋求科學(xué)的定義,必須了解嵌入式系統(tǒng)的發(fā)展歷史,按照歷史性、本質(zhì)性、普遍通用性來定義嵌入式系統(tǒng),并把定義與
    發(fā)表于 06-18 06:53

    談?wù)剦好綦娮璧?b class='flag-5'>發(fā)展歷史

    談?wù)剦好綦娮璧?b class='flag-5'>發(fā)展歷史壓敏電阻是大家都會經(jīng)常用的一款電阻器,那么對于壓敏電阻發(fā)展歷史你們有所了解嗎?為此小編跟大家科普一下這方面的知識。一起進入本文的主題吧!1929~1930年,美國
    發(fā)表于 12-27 14:56

    EL顯示器的發(fā)展歷史概覽

    EL顯示器的發(fā)展歷史概覽
    發(fā)表于 06-03 06:13

    單片機的發(fā)展歷史

    單片機 微機 微型計算機 計算機的發(fā)展歷史 單片機的發(fā)展歷史
    發(fā)表于 07-13 08:49

    關(guān)于嵌入式系統(tǒng)的定義與發(fā)展歷史

    嵌入式系統(tǒng)的定義與發(fā)展歷史嵌入式系統(tǒng)誕生于微型機時代,經(jīng)歷了漫長的獨立發(fā)展的單片機道路。下面是小編整理的關(guān)于嵌入式系統(tǒng)的定義與發(fā)展歷史,希望
    發(fā)表于 10-27 06:50

    單片機的發(fā)展歷史是怎樣的

    1.1 單片機的發(fā)展歷史:單片機: 將微處理器、半導(dǎo)體存儲器、I/O接口和中斷系統(tǒng)集成在—塊硅片上的具有完整功能的微型計算機。1974 年12 月, 美國仙童公司推出了世界上第一臺8位單片機F8
    發(fā)表于 11-30 07:46

    嵌入式系統(tǒng)的發(fā)展歷史

    目錄1.1概述1.1.1 嵌入式系統(tǒng)的定義1.1.2嵌入式系統(tǒng)的發(fā)展歷史1.1.3嵌入式系統(tǒng)的發(fā)展的新變化1.2嵌入式系統(tǒng)的組成1.3ARM處理器1.3.1ARM處理器介紹1.3.2ARM體系結(jié)構(gòu)
    發(fā)表于 12-22 06:39

    白光LED發(fā)展歷史

    白光LED發(fā)展歷史
    發(fā)表于 05-09 09:52 ?3899次閱讀

    什么是消息隊列?消息隊列中間件重要嗎?

    應(yīng)用解耦:消息隊列減少了服務(wù)之間的耦合性,不同的服務(wù)可以通過消息隊列進行通信,而不用關(guān)心彼此的實現(xiàn)細節(jié)。
    的頭像 發(fā)表于 11-07 14:55 ?1717次閱讀

    RTOS消息隊列的應(yīng)用

    基于RTOS的應(yīng)用中,通常使用隊列機制實現(xiàn)任務(wù)間的數(shù)據(jù)交互,一個應(yīng)用程序可以有任意數(shù)量的消息隊列,每個消息隊列都有自己的用途。
    發(fā)表于 05-29 10:49 ?788次閱讀
    RTOS消息<b class='flag-5'>隊列</b>的應(yīng)用

    FreeRTOS消息隊列介紹

    隊列是為了任務(wù)與任務(wù)、任務(wù)與中斷之間的通信而準備的,可以在任務(wù)與任務(wù)、任務(wù)與中斷之間傳遞消息,隊列中可以存儲有限的、大小固定的數(shù)據(jù)項目。任務(wù)與任務(wù)、任務(wù)與中斷之間要交流的數(shù)據(jù)保存在隊列中,叫做
    的頭像 發(fā)表于 07-06 16:58 ?1070次閱讀
    FreeRTOS消息<b class='flag-5'>隊列</b>介紹

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品