RabbitMQ架構詳解(7大架構原理模型圖解)
來源:mikechen的網際網路架構
RabbitMQ是大家經常使用的訊息中介軟體,本篇就來談談RabbitMQ架構
RabbitMQ
RabbitMQ是一款使用Erlang語言開發的,實現了高階訊息佇列協議(AMQP)的開源訊息中介軟體。
AMQP,即Advanced Message Queuing Protocol,高階訊息佇列協議是應用層協議的一個開放標準,為面向訊息的中介軟體設計。
Erlang語言,主要用於併發及分散式系統的開發,在電信領域應用廣泛,OTP作為Erlang語言的一部分,包含了很多基於Erlang開發的中介軟體及工具庫。
RabbitMQ特點
1.可靠性:RabbitMQ使用一些機制來保證可靠性, 如持久化、傳輸確認及釋出確認等。
2.靈活的路由 :在訊息進入佇列之前,透過交換器來路由訊息。
3.擴充套件性:多個RabbitMQ節點可以組成一個叢集,也可以根據實際業務情況動態地擴充套件 叢集中節點。
4.高可用性:佇列可以在叢集中的機器上設定映象,使得在部分節點出現問題的情況下隊 列仍然可用。
5.多種協議:RabbitMQ除了原生支援AMQP協議,還支援STOMP, MQTT等多種訊息 中介軟體協議。
6.多語言客戶端:RabbitMQ 幾乎支援所有常用語言,比如 Java、 Python、 Ruby、 PHP、 C#、 JavaScript 等。
RabbitMQ架構設計
RabbitMQ架構,如下圖所示:
RabbitMQ架構會涉及如下模型:Producer、Consumer、Queue、Exchange、Broker、RoutingKey、BindingKey。
RabbitMQ架構模型
1.Producer
訊息生產者Producer:主要就是生成訊息,透過通道(Channel),把訊息傳送給交換機(Exchange)。
訊息一般可以包含 2 個部分:
訊息體(payload):一般是一個帶有業務邏輯結構的資料,比如:一個 JSON 字串;
標籤(Label):用來表述這條訊息,比如:一個交換器的名稱和一個路由鍵;
2.Consumer
這個大家也比較清楚,就是訊息消費者,就是接受訊息的程式。
消費者監聽RabbitMQ中的(Queue)佇列中的訊息,然後去消費。
備註:訊息(Message)會一直留在佇列裡,直到被消費者(Consumer)消費。
3.Queue
用於儲存訊息,如下圖所示:
RabbitMQ 的生產者生產訊息並最終投遞到佇列中,消費者可以從佇列中獲取訊息並消費。
RabbitMQ中訊息都只能儲存在佇列中,這一點和Kafka這種訊息中介軟體相反。
多個消費者可以訂閱同一個佇列,這時佇列中的訊息會被平均分攤給多個消費者進行處理,如下圖所示:
4.Exchange
生產者將訊息傳送到Exchange,由交換器將訊息路由到一個或者多個佇列中。
如下圖所示:
這裡的互動機會涉及如下四種型別:
直接Direct;
扇出Fanout ;
主題Topic ;
訊息頭Headers;
不同的型別有著不同的路由策略。
5.Broker
可以將一個RabbitMQ Broker看作一臺RabbitMQ伺服器,如下圖所示:
上圖展示了訊息從生產者存入RabbitMQ Broker,以及消費者從Broker中消費資料的完整過程。
6.Routing Key
生產者將訊息發給交換器的時候,一般會指定一個 RoutingKey,用來指定這個訊息的路由規則。
如下圖所示:
生產者可以在傳送訊息給交換器時,透過指定 RoutingKey 來決定訊息流向哪裡。
7.BindingKey
RabbitMQ 中透過繫結將交換器與佇列關聯起來,在繫結的時候一般會指定一個繫結鍵(BindingKey),這樣 RabbitMQ 就知道如何正確地將訊息路由到佇列了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2952378/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RabbitMQ原理和架構圖解(附6大工作模式)MQ架構圖解模式
- Kafka 架構和原理機制 (圖文全面詳解)Kafka架構
- Jenkins架構詳解Jenkins架構
- 圖解 Kubernetes 架構圖解架構
- 詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- Chromium VIZ架構詳解架構
- kafka核心架構詳解Kafka架構
- TDengine 3.0 架構詳解架構
- 1.5 比特幣架構詳解比特幣架構
- 3.4 以太坊架構詳解架構
- Android架構元件WorkManager詳解Android架構元件
- Dubbo架構設計詳解架構
- HotDB 基礎架構詳解架構
- 萬字詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- 長文圖解:詳解金字塔原理如何應用於架構設計圖解架構
- 圖解架構 | SaaS、PaaS、IaaS圖解架構
- 瞭解ansible架構與工作原理架構
- [大資料] Spark架構詳解大資料Spark架構
- 乾貨:軟體架構詳解架構
- 詳解安卓架構入門安卓架構
- tomcat架構分析及配置詳解Tomcat架構
- 軟體架構-nginx詳解上架構Nginx
- 詳解Diffusion擴散模型:理論、架構與實現模型架構
- 從 Llama 1 到 3.1:Llama 模型架構演進詳解模型架構
- 深入詳解Mybatis的架構原理與6大核心流程MyBatis架構
- RabbitMQ 元件和架構MQ元件架構
- CynosDB技術詳解——架構設計架構
- 分散式|Dubbo架構設計詳解分散式架構
- 乾貨:軟體架構分析詳解架構
- ClickHouse、Doris、 Impala等MPP架構詳解架構
- 一文詳解微服務架構微服務架構
- Serverless無伺服器架構詳解Server伺服器架構
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- Android官方架構元件Lifecycle:生命週期元件詳解&原理分析Android架構元件
- 高併發架構最全詳解(圖文全面總結)架構
- RabbitMQ系列(六)你不知道的RabbitMQ叢集架構全解MQ架構
- 解決方案架構、系統架構和企業架構區別架構
- 容器雲架構–瞭解 Kubernetes 網路模型架構模型