成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

以Rabbit MQ為例講透消息隊列

譯文
開發 前端
本文向您簡單介紹了消息隊列模型Rabbit MQ的基本特點,并討論了不同類型的交換,可作為消息隊列的初學者指南。

【51CTO.com快譯】在早年的單體架構時代,由于應用程序的內部組件存在著緊密的耦合關系,因此它們之間存在著千絲萬縷的直接關聯。例如,在一個簡單的電子商務應用中,其結帳服務需要與支付網關服務保持通信。這就得依靠TCP的直接連接來完成。由此,我們很容易碰到如下限制場景:

  • 一旦結帳消息被發出后,應用需要能夠及時偵聽到,并予以答復,方可繼續執行下一個任務。
  • 如果庫存服務出現了故障,應用將進行反復嘗試,直至連接被成功建立為止。
  • 如果同時有大量的支付請求產生,庫存服務將由于供不應求,而導致整個系統陷入癱瘓。

可以說,這些都是創建消息隊列和代理(message queues/brokers)的“剛需”。

什么是消息隊列

如下圖所示,消息隊列往往處于需要彼此通信的兩個服務之間:

通信服務的流程圖

如上圖所示,系統1通常作為生產者(producer)會將消息添加到隊列中,以便立即執行下一個任務。

在準備就緒后,系統2作為使用者(consumer)會從隊列中獲取消息,予以處理,并在完成后立即轉向下一條消息。據此,兩個應用系統實現了邏輯上的解耦關系。

同時,消息代理也有助于提高系統的可擴展性。當系統中有大量并發的“獲取”操作時,隊列會出現擁堵,這就意味著我們需要提供更多的取出服務。那么在上述例子的系統2中,如果有多個使用者要從隊列中讀取內容,以滿足由大量用戶的支付請求所產生的負載時,應用系統需要具一定的可擴展能力。

此外,消息隊列的另一個好處是:隊列本身可以被構建在計算機或服務器的內部,以分擔Web應用程序的某些工作,進而提高系統的整體性能。

生產者和使用者的流程圖

不知您是否聽說過RabbitMQ?它是高級消息隊列協議(Advanced Message Queuing Protocol,AMQP)模型的實現。

在此類消息模型中,生產者會去獲取那些由服務產生的消息。就效率而言,與其我們直接產生一個消息隊列,不如產生消息的交換節點。而交換節點恰好可以像中轉郵局一樣,去接收所有的消息,然后根據它們的處理方式予以分發。

如上圖所示,一個交換節點可以連接多個隊列。在上面的例子中,使用者1、2、3在系統中扮演等待隊列連接的使用者。它們需要用到(consume)結帳服務。也就是說,在該流程中,結帳操作將發送一條消息給交換節點。而此類交換是通過各種綁定(bindings)被連接到不同的隊列上。當然,我們可以通過綁定鍵(binding key),來引用這些綁定,以方便它們進入應用程序中使用者服務的子隊列。

生產者和交換的流程圖

我們之所以要采用消息這種方式,主要是利用其能夠在系統中按需移動的靈活性。而這種靈活性在很大程度上,取決于可用于交換的不同類型。下面,讓我們來討論幾種常見的交換類型:

扇出交換(Fanout Exchange)

扇出交換是將消息路由到與其綁定的所有隊列,同時忽略其路由鍵。如果我們將N個隊列綁定至扇出交換,那么在有新的消息被發布到該交換處時,此消息的副本將會被傳遞到所有N個隊列中。

簡而言之,生產者產生待交換的消息,而交換會在收到該消息后予以復制,并將其發送到自己知曉的每個隊列處。可見,扇出交換是對消息進行廣播路由的理想選擇。

扇出交換

直接交換(Direct Exchange)

作為消息單播路由的理想選擇,直接交換會基于消息路由密鑰(message routing key),將消息傳遞到隊列處。

簡而言之,生產者產生待交換的消息。該消息帶有對應的路由密鑰信息。交換會將路由密鑰與已綁定密鑰進行比較,如果完全匹配的話,消息則會被轉移至相應地系統中。 


直接交換

主題交換(Topic Exchange)

我們事先會將隊列綁定到交換主題的模式上,然后將其與消息路由鍵進行匹配,進而將不同的消息分別路由到一個或多個隊列處。

簡而言之,通過主題交換,我們可以在路由鍵和綁定鍵之間進行部分匹配。因此,該交換通常被用于消息的多播路由。

主題交流

頭部交換(Header Exchange)

頭部交換并不關注路由鍵的屬性,而是根據不同的消息頭部值,將各種消息路由到相應的隊列中。

簡而言之,路由密鑰會被完全忽略,而消息會根據其頭部值在系統中移動。

標頭交換

默認交換(Default Exchange)

默認交換是一種由代理(broker)預先聲明的不帶名稱(即:空字符串)的直接交換方式。簡而言之,消息的路由鍵與隊列的名稱是聯系在一起的。

由于每個被創建的隊列都會使用與隊列名稱相同的路由鍵,來自動綁定到正確的隊列上,因此它對于簡單的應用而言,非常實用。

默認交換

除了上述五種靈活的交換類型,Rabbit MQ的優點還包括:云計算友好、容錯能力、跨語言能力、通信安全性、消息確認能力、以及開源等特點。

原文標題:Message Queue (Rabbit MQ): A Beginners IntroductionMessage Queue (Rabbit MQ): A Beginners Introduction,作者: Vijay Thakare

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:華軒 來源: 51CTO
相關推薦

2025-05-13 08:09:56

2019-08-23 12:12:49

MQ消息隊列

2021-08-02 09:50:47

Vetur源碼SMART

2020-07-30 08:03:36

MQ死信隊列

2016-12-20 12:34:46

存儲MySQL流程

2009-08-06 16:21:09

點對點消息隊列

2019-10-22 08:12:49

消息隊列分布式系統

2018-08-22 16:40:51

前端JavascriptVue

2017-10-11 15:08:28

消息隊列常見

2011-07-08 09:55:02

數據中心防震

2020-03-12 09:02:34

數據思維統計學大數據

2020-03-26 09:18:54

高薪本質因素

2021-04-20 08:32:51

消息MQ隊列

2024-07-16 18:05:19

延遲隊列MQRabbitMQ

2022-02-14 14:28:57

驅動開發鴻蒙系統

2021-04-16 08:20:00

Flink CEP直播監控

2022-01-10 12:23:00

TypeScript ESLint前端

2021-01-14 09:00:00

開發FedoraUbuntu

2009-03-02 16:57:34

LinuxUbuntu配置完全方案

2025-01-10 08:20:00

MQ消息架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品视频在线观看一区二区三区 | 人人做人人澡人人爽欧美 | 成人精品一区二区三区中文字幕 | 久久精品久久久久久 | 国内精品在线视频 | 性视频网 | 婷婷在线免费 | 欧美网站一区 | 一区二区三区国产视频 | 颜色网站在线观看 | 国产精品国产a级 | 蜜桃av一区二区三区 | 一级欧美日韩 | 久久久精品一区二区三区 | 日韩精品一区二区三区高清免费 | 欧美在线观看一区二区 | 亚洲一区二区三区 | 成人在线观 | 狠狠操狠狠干 | 精品久久久久一区二区国产 | 丝袜美腿av | 成人免费一级 | 国产中文字幕亚洲 | 精品视频在线观看 | 欧美精品一区二区蜜桃 | 成人在线免费视频 | 91资源在线 | 中文字幕高清视频 | 久久成人免费 | 国产中文字幕网 | 国产精品久久一区二区三区 | 黄网站在线观看 | 成人国产精品免费观看 | 欧美久久视频 | 伦理二区 | 日韩国产专区 | 国产乱码精品一区二区三区五月婷 | 欧美久久综合 | 一区二区三区四区国产精品 | 成人区精品一区二区婷婷 | 成人av色|