精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

消息隊列的發展歷史

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

上一篇我們用一個秒殺案例探討了我們為什么需要消息隊列。今天我們來回顧一下消息隊列的發展歷史。

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

我們來依次介紹一下這些產品

IBM MQ

IBM MQ 于 1993 年推出。它最初稱為 MQSeries,2002 年更名為 WebSphere MQ。2014 年更名為 IBM MQ。IBM MQ 是一款非常成功的產品,廣泛應用于金融領域。到 2020 年,其收入仍將達到 10 億美元。下圖顯示了 IBM MQ 的關鍵架構。

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

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

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

RabbitMQ

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

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

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

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

Kafka

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

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

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

Pulsar

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

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

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

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

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

Pulsar 架構分為兩層:服務層和持久層。服務層由多個消息代理組成,負責處理傳入和傳出的信息。服務層是無狀態的,它利用 Apache BookKeeper 來存儲信息。

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

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

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IBM
    IBM
    +關注

    關注

    3

    文章

    1749

    瀏覽量

    74631
  • 管理器
    +關注

    關注

    0

    文章

    242

    瀏覽量

    18493
  • 開源
    +關注

    關注

    3

    文章

    3256

    瀏覽量

    42420
  • 消息隊列
    +關注

    關注

    0

    文章

    33

    瀏覽量

    2969

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

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

收藏 人收藏

    評論

    相關推薦

    RTOS發展歷史

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

    操作系統發展歷史

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

    FPGA技術的發展歷史和動向

    本文關鍵字:fpga技術,fpga發展, fpga培訓,FPGA應用開發入門與典型實例 一、FPGA技術的發展歷史 縱觀數字集成電路的發展歷史
    發表于 08-08 10:24

    Protel的發展歷史及Protel99特性

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

    嵌入式系統的發展歷史

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

    談談壓敏電阻的發展歷史

    談談壓敏電阻的發展歷史壓敏電阻是大家都會經常用的一款電阻器,那么對于壓敏電阻發展歷史你們有所了解嗎?為此小編跟大家科普一下這方面的知識。一起進入本文的主題吧!1929~1930年,美國
    發表于 12-27 14:56

    EL顯示器的發展歷史概覽

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

    單片機的發展歷史

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

    關于嵌入式系統的定義與發展歷史

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

    單片機的發展歷史是怎樣的

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

    嵌入式系統的發展歷史

    目錄1.1概述1.1.1 嵌入式系統的定義1.1.2嵌入式系統的發展歷史1.1.3嵌入式系統的發展的新變化1.2嵌入式系統的組成1.3ARM處理器1.3.1ARM處理器介紹1.3.2ARM體系結構
    發表于 12-22 06:39

    白光LED發展歷史

    白光LED發展歷史
    發表于 05-09 09:52 ?3607次閱讀

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

    應用解耦:消息隊列減少了服務之間的耦合性,不同的服務可以通過消息隊列進行通信,而不用關心彼此的實現細節。
    的頭像 發表于 11-07 14:55 ?1383次閱讀

    RTOS消息隊列的應用

    基于RTOS的應用中,通常使用隊列機制實現任務間的數據交互,一個應用程序可以有任意數量的消息隊列,每個消息隊列都有自己的用途。
    發表于 05-29 10:49 ?618次閱讀
    RTOS消息<b class='flag-5'>隊列</b>的應用

    FreeRTOS消息隊列介紹

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