RM新时代网站-首页

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

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

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

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

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

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

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

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

IBM MQ

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

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

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

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

RabbitMQ

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

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

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

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

Kafka

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

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

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

Pulsar

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

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

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

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

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

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

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

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

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

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

審核編輯:湯梓紅

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

    關(guān)注

    3

    文章

    1755

    瀏覽量

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

    關(guān)注

    0

    文章

    246

    瀏覽量

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

    關(guān)注

    3

    文章

    3309

    瀏覽量

    42471
  • 消息隊(duì)列
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    2972

原文標(biāo)題:面試官:消息隊(duì)列是怎么演進(jìn)的?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RTOS發(fā)展歷史

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

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

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

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

    本文關(guān)鍵字:fpga技術(shù),fpga發(fā)展, fpga培訓(xùn),F(xiàn)PGA應(yīng)用開發(fā)入門與典型實(shí)例 一、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ī)時(shí)代,經(jīng)歷了漫長(zhǎng)的獨(dú)立發(fā)展的單片機(jī)道路。給嵌入式系統(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ā)展歷史壓敏電阻是大家都會(huì)經(jīng)常用的一款電阻器,那么對(duì)于壓敏電阻發(fā)展歷史你們有所了解嗎?為此小編跟大家科普一下這方面的知識(shí)。一起進(jìn)入本文的主題吧!1929~1930年,美國(guó)
    發(fā)表于 12-27 14:56

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

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

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

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

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

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

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

    1.1 單片機(jī)的發(fā)展歷史:?jiǎn)纹瑱C(jī): 將微處理器、半導(dǎo)體存儲(chǔ)器、I/O接口和中斷系統(tǒng)集成在—塊硅片上的具有完整功能的微型計(jì)算機(jī)。1974 年12 月, 美國(guó)仙童公司推出了世界上第一臺(tái)8位單片機(jī)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 ?3643次閱讀

    什么是消息隊(duì)列?消息隊(duì)列中間件重要嗎?

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

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

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

    FreeRTOS消息隊(duì)列介紹

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