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

2021-10-06 03:28:45 字數 2324 閱讀 4091

也稱為 warren (兔子窩) 模式。實現 rabbitmq 的高可用集群,一般在併發和資料量不高的情況下,這種模式非常的好用且簡單。

也就是乙個主/備方案,主節點提供讀寫,備用節點不提供讀寫。如果主節點掛了,就切換到備用節點,原來的備用節點公升級為主節點提供讀寫服務,當原來的主節點恢復執行後,原來的主節點就變成備用節點,和 activemq 利用 zookeeper 做主/備一樣,也可以一主多備。

遠端模式可以實現雙活的一種模式,簡稱 shovel 模式,所謂的 shovel 就是把訊息進行不同資料中心的複製工作,可以跨地域的讓兩個 mq 集群互聯,遠距離通訊和複製。

shovel 就是我們可以把訊息進行資料中心的複製工作,我們可以跨地域的讓兩個 mq 集群互聯。

如圖所示,有兩個異地的 mq 集群(可以是更多的集群),當使用者在地區 1 這裡下單了,系統發訊息到 1 區的 mq 伺服器,發現 mq 服務已超過設定的閾值,負載過高,這條訊息就會被轉到 地區 2 的 mq 伺服器上,由 2 區的去執行後面的業務邏輯,相當於分攤我們的服務壓力。

在使用了 shovel 外掛程式後,模型變成了近端同步確認,遠端非同步確認的方式,大大提高了訂單確認速度,並且還能保證可靠性。

如上圖所示,當我們的訊息到達 exchange,它會判斷當前的負載情況以及設定的閾值,如果負載不高就把訊息放到我們正常的 warehouse_goleta 佇列中,如果負載過高了,就會放到 backup_orders 佇列中。backup_orders 佇列通過 shovel 外掛程式與另外的 mq 集群進行同步資料,把訊息發到第二個 mq 集群上。

非常經典的 mirror 映象模式,保證 100% 資料不丟失。在實際工作中也是用得最多的,並且實現非常的簡單,一般網際網路大廠都會構建這種映象集群模式。

mirror 映象佇列,目的是為了保證 rabbitmq 資料的高可靠性解決方案,主要就是實現資料的同步,一般來講是 2 - 3 個節點實現資料同步。對於 100% 資料可靠性解決方案,一般是採用 3 個節點。

如上圖所示,用 keepalived 做了 ha-proxy 的高可用,然後有 3 個節點的 mq 服務,訊息傳送到主節點上,主節點通過 mirror 佇列把資料同步到其他的 mq 節點,這樣來實現其高可靠。

也是實現異地資料複製的主流模式,因為 shovel 模式配置比較複雜,所以一般來說,實現異地集群的都是採用這種雙活 或者 多活模型來實現的。這種模式需要依賴 rabbitmq 的 federation 外掛程式,可以實現持續的,可靠的 amqp 資料通訊,多活模式在實際配置與應用非常的簡單。

rabbitmq 部署架構採用雙中心模式(多中心),那麼在兩套(或多套)資料中心各部署一套 rabbitmq 集群,各中心的rabbitmq 服務除了需要為業務提供正常的訊息服務外,中心之間還需要實現部分佇列訊息共享。

多活集群架構如下:

federation 外掛程式是乙個不需要構建 cluster ,而在 brokers 之間傳輸訊息的高效能外掛程式,federation 外掛程式可以在 brokers 或者 cluster 之間傳輸訊息,連線的雙方可以使用不同的 users 和 virtual hosts,雙方也可以使用不同版本的 rabbitmq 和 erlang。federation 外掛程式使用 amqp 協議通訊,可以接受不連續的傳輸。federation 不是建立在集群上的,而是建立在單個節點上的,如圖上黃色的 rabbit node 3 可以與綠色的 node1、node2、node3 中的任意乙個利用 federation 外掛程式進行資料同步。

如上圖所示,federation exchanges 可以看成 downstream 從 upstream 主動拉取訊息,但是並不是拉取所有訊息,必須是在 downstream 上已經明確定義 bingdings 關係的 exchange,也就是有實際的物理 queue 來接收訊息,才會從 upstream 拉取訊息到 downstream 。

它使用 amqp 協議實現**間通訊,downstream 會將繫結關係組合在一起,繫結/解綁命令將傳送到 upstream 交換機。因此,federation exchange 只接收具有訂閱的訊息。

RabbitMQ集群架構模式

實現rabbitmq的高可用集群,一般在併發和資料量不高的情況下,這種模式非常的好且簡單。主備模式也稱為warren模式 主備模式 主節點提供讀寫,從節點不提供讀寫服務,只是負責提供備份服務,備份節點的主要功能是在主節點宕機時,完成自動切換 從 主 主從模式 主節點提供讀寫,從節點唯讀 mode t...

RabbitMQ集群架構模式介紹

遠端模式可以實現雙活的一種模式,簡稱shovel模式,所謂shovel就是我們可以把訊息進行不同資料中心的複製工作,可以跨地域的讓兩個mq集群互聯 shovel模式拓撲圖 shovel集群的配置,首先需要啟動rabbitmq外掛程式,命令如下 建立rabbitmq.config檔案 touch et...

RabbitMQ分布式集群架構

設計集群的目的 1 集群配置方式 rabbitmq可以通過三種方法來部署分布式集群系統,分別是 cluster,federation,shovel federation 應用於廣域網,允許單台伺服器上的交換機或佇列接收發布到另一台伺服器上交換機或佇列的訊息,可以是單獨機器或集群。federation...