RabbitMQ 模型架構

2021-08-27 16:14:31 字數 1510 閱讀 7419

解耦:通過基於資料的介面層,讓不同的模組各自擴充套件修改,實現解耦

冗餘:mq 可以把資料進行持久化直到它們被完全處理,規避了資料丟失的風險

擴充套件性:通過解耦可以方便增加應用的處理過程,從而提高訊息入隊和處理的效率,實現擴充套件

削峰:mq可以支撐關鍵元件支撐突發訪問壓力,緩衝上下游流量差,實現削峰

可恢復性:部分元件失效時,加入訊息佇列的訊息仍然可以在系統恢復後處理

順序保證:mq支援一定的順序性

緩衝:mq 通過乙個緩衝層來幫助任務高效執行

非同步通訊:把不需要立即處理的訊息通過mq進行非同步處理

producer:生產者建立訊息,發布到rabbitmq中,訊息包含 訊息體 和 標籤(交換器名稱+路由鍵)

consumer:消費者連線到rabbitmq伺服器,並訂閱到佇列上,消費者會消費訊息的訊息體

broker:服務節點,大多數情況可以把乙個rabbitmq broker看作一台rabbitmq伺服器

queue:佇列,rabbitmq的內部物件,用於儲存資訊。多個消費可以訂閱同乙個佇列,但訊息會被平均分攤,而不是每個消費者都會受到所有的訊息

exchange:交換器,生產者將訊息傳送到交換器,交換器將訊息路由到乙個或者多個佇列中

routingkey:路由鍵,生產者將訊息發給交換器的時候會指定乙個路由鍵,用來指定路由規則

binding:繫結,rabbitmq通過繫結將交換器與佇列關聯起來,繫結時會指定bindingkey

connection:連線,生產者或消費者和broker之間的一條tcp連線

channel:通道,建立在connection上的虛擬連線,每條amqp指令都通過通道完成

交換器型別

生產者傳送訊息

生產者連線到 rabbitmq broker,建立乙個連線(connection),開啟乙個通道(channel)

生產者宣告乙個交換器,並設定相關屬性(交換機型別、持久化)

生產者宣告乙個佇列,並設定相關屬性(排他、持久化、自動刪除)

生產者通過路由鍵將交換器和佇列繫結起來

生產者發訊息至rabbitmq broker(包含路由鍵、交換器資訊)

相應的交換器根據接收到的路由鍵查詢相匹配的佇列

若找到佇列,則把訊息存入;若沒有,則丟棄或者回退給生產者

關閉通道

關閉連線

消費者接收訊息

消費者連線到 rabbitmq broker ,建立乙個連線(connection),開啟乙個通道(channel)

消費者向 rabbitmq broker 請求消費對應佇列中的訊息

等待 rabbitmq broker 回應並投遞相應佇列中的訊息,消費者接收訊息

消費者確認(ack)接收到的訊息

rabbitmq 從佇列中刪除相應已經被確認的訊息

關閉通道

關閉連線

RabbitMQ集群架構模型與原理解析

也稱為 warren 兔子窩 模式。實現 rabbitmq 的高可用集群,一般在併發和資料量不高的情況下,這種模式非常的好用且簡單。也就是乙個主 備方案,主節點提供讀寫,備用節點不提供讀寫。如果主節點掛了,就切換到備用節點,原來的備用節點公升級為主節點提供讀寫服務,當原來的主節點恢復執行後,原來的主...

RabbitMQ五種訊息模型

二 work queues 三 publish subscribe 發布 訂閱 三 routing 路由 四 topic 3 4 5這三種都屬於訂閱模型,只不過進行路由的方式不同 exchange 交換機 生產者將訊息傳送到交換器,交換器根據路由規則將訊息路由乙個或多個佇列中。而路由規則受 exch...

模型驅動架構

模型驅動架構 自從2002年被omg object management group 國際物件管理集團 提出以後,隨風潛入夜,潤物細無聲 未見轟轟烈烈宣傳,各大廠商卻驚人一致地爭相跟進,關於mda的話題轉眼之間在網路上也如火如荼地繁榮起來了。為了實現mda這一巨集大構想,omg制定了一系列的標準 u...