rabbitmq 集群模式


Rabbitmq集群分為二種方式:
普通模式:創建好RabbitMQ集群之后的默認模式。
鏡像模式:把需要的隊列做成鏡像隊列。

普通集群模式:queue創建之后,如果沒有其它policy,消息實體只存在於其中 一個節點,A、B兩個Rabbitmq節點僅有相同的元數據,即隊列結構,但K列的 數據僅保存有一份,即創建該隊列的rabbitmq節點(A節點),當消息進入A節 點的Queue中后,consumer從B節點拉取時,RabbitMQ會臨時在A、B間進行 消息傳輸,把A中的消息實體取出並經過B發送給consumer,所以consumer可 以連接每一個節點,從中取消息,該模式存在一個問題就是當A節點故障后,B 節點無法取到A節點中還未消費的消息實體。
鏡像集群模式: 把需要的隊列做成鏡像隊列,存在於多個節點,屬於RabbitMQ的HA方案(鏡 像模式是在普通模式的基礎上,增加一些鏡像策略)該模式解決了普通模式中的數據丟失問題,其實質和普通模式不同之處在於,消息實體會主動在鏡像節點間同步,而不是在consumer取數據時臨時拉取,該模 式帶來的副作用也很明顯,除了降低系統性能外,如果鏡像隊列數量過多,加之大量的消息進入,集群內部的網絡帶寬將會被這種同步通訊大大消耗掉,所以在 對可靠性要求較高的場合中適用,一個隊列想做成鏡像隊列,需要先設置policy。

客戶端創建隊列的時候,rabbitmq集群根據“隊列名稱”自動設置是普通集群模式或鏡像隊列的集群中有兩種節點類型:

內存節點:只將數據保存到內存
磁盤節點:保存數據到內存和磁盤。
內存節點雖然不寫入磁盤,但是它執行比磁盤節點要好,集群中,只需要一個磁盤節點來保存數據就足夠了如果集群中只有內存節點,那么不能全部停止它們,否則所有數據消息在服務器全部停機之后都會丟失。

在一個rabbitmq集群里,有3台或以上機器,其中1台使用磁盤模式,其它節點使用內存模式,內存節點無訪問速度更快,由於磁盤IO相對較慢,因此可作為數據備份使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM