根據我的理解,RabbitMQ集羣的可擴展性並非可用性,但使用鏡像隊列還可以提供可用性,因爲如果該主節點失敗,最新的奴隸可以晉升爲主人。高可用性的RabbitMQ集羣隊列鏡像:在時間t獲取主節點的ip隊列
從文檔:發佈到隊列
消息被複制到所有的奴隸。消費者無論連接到哪個節點都連接到主節點,從節點丟棄已在主節點確認的消息。隊列鏡像因此增強了可用性,但不會跨節點分發負載(所有參與節點都會完成所有工作)。
因此,跨給定隊列的節點間的負載均衡沒有意義,因爲這將始終爲與隊列主節點聯繫的節點添加額外的行程(除非我誤解了某些內容) 。因此,我們希望始終能夠知道哪個節點是給定隊列的主節點。
我還沒有真正與RabbitMQ合作過,所以也許我只是在文檔中丟失了它,但是似乎沒有辦法確定鏡像隊列的主服務器的IP,如果出現主服務器故障和奴隸晉升爲主人。我看到的每個源代碼都只是說明了設置初始主節點的能力,這對我沒有多大幫助。對於任何時間t,如何找到給定隊列的主節點ip?如果只有一個網絡分區(即使在同一個局域網中的節點也可能發生),那麼在負載均衡器後面簡單地擁有節點似乎也不好,那麼我們可能會遇到節點,與隊長交流,或者更糟糕的是,如果你願意的話,我們可能會出現一個分裂的大腦。
考慮更多關於它之後,額外的跳躍可能並不像試圖跳過跳躍引入的複雜性那麼大。 –