RabbitMQ叢集

溪源的奇思妙想發表於2020-03-06

RabbitMQ叢集

在RabbitMQ叢集裡,執行時狀態包含交換器、佇列、繫結器、使用者、虛擬主機以及策略,它們對所有節點都可用。
這種共享執行時狀態的特性,使得叢集中的每一個節點都能綁釋出或者刪除連線到第一個節點建立的交換器,
因此當節點中出現節點當機,其執行狀態以及資料都是可以轉移恢復的。

RabbitMQ提供了HA佇列,它可以

  • 跨越多個叢集節點並共享同步佇列狀態和訊息資料
  • HA佇列中的某個節點發生故障的話,叢集中的其他節點仍然儲存著訊息和佇列狀態。
  • 當故障的節點重新加入叢集時,該節點會完全同步自節點故障以來所有被消費的訊息。
  • 通過HA佇列,我們可以實現叢集中有節點專門服務釋出者,有節點專門服務於消費者。
  • 一個訊息被髮送到RabbitMQ叢集中的任何一個節點時,該訊息會被路由到佇列中去,無關佇列在叢集中的位置。

HA佇列需要注意的地方

  • 不能跨越WAN或者網際網路來搭建RabbitMQ叢集
  • 叢集中的節點不宜過多,通常上限在32-64個,太多的節點會增加內部共享執行時狀態的複雜性。

在RabbitMQ叢集有三類節點

  • 磁碟節點:將叢集的執行時狀態會同時儲存在記憶體和磁碟中。
  • 記憶體節點:只會把叢集的執行時狀態儲存在記憶體中。
  • 狀態節點:在任意時刻,一個叢集只能有一個統計節點,用來負責收集叢集中每一個節點的全部統計資料和狀態資料。

注:
1.磁碟節點和記憶體節點都可以進行資料持久化。
2.當節點或者叢集崩潰時,在磁碟節點啟動並重新加入叢集時,會被用來重建叢集的執行狀態。而記憶體節點不會包含任何執行時資料,叢集中其他節點會把佇列定義等資訊傳送給它。
3.RabbitMQ叢集中最少要有一個磁碟節點,但是過多磁碟節點也會導致共享狀態不一致的問題。

實現RabbitMQ叢集可參考:
https://blog.csdn.net/weixin_40990818/article/details/101350558

在這裡插入圖片描述

相關文章