RabbitMQ 的4種集群架構(gòu)

1. 主備模式

????也稱為 Warren (兔子窩) 模式。實現(xiàn) rabbitMQ 的高可用集群,一般在并發(fā)和數(shù)據(jù)量不高的情況下盾戴,這種模式非常的好用且簡單术健。

????也就是一個主/備方案,主節(jié)點提供讀寫裁替,備用節(jié)點不提供讀寫项玛。如果主節(jié)點掛了,就切換到備用節(jié)點弱判,原來的備用節(jié)點升級為主節(jié)點提供讀寫服務(wù)襟沮,當(dāng)原來的主節(jié)點恢復(fù)運行后,原來的主節(jié)點就變成備用節(jié)點昌腰,和 activeMQ 利用 zookeeper 做主/備一樣开伏,也可以一主多備。


HaProxy 配置:

listen rabbitmq_cluster

bind 0.0.0.0:567? # 配置 tcp 模式

mode tcp? # 簡單的輪詢

balance roundrobin? # 主節(jié)點?roundrobin? 隨機

server 你的76機器 hostname? 192.168.11.76:5672 check inter 5000 rise 2 fall 2

server 你的77機器 hostname? 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2? # 備用節(jié)點

????注意了剥哑,上面的 rabbitMQ 集群節(jié)點配置 # inter 每隔 5 秒對 mq 集群做健康檢查硅则, 2 次正確證明服務(wù)可用,2 次失敗證明服務(wù)器不可用株婴,并且配置主備機制

2. 遠程模式

????遠程模式可以實現(xiàn)雙活的一種模式怎虫,簡稱 shovel 模式,所謂的 shovel 就是把消息進行不同數(shù)據(jù)中心的復(fù)制工作困介,可以跨地域的讓兩個 MQ 集群互聯(lián)大审,遠距離通信和復(fù)制。

? ? Shovel 就是我們可以把消息進行數(shù)據(jù)中心的復(fù)制工作座哩,我們可以跨地域的讓兩個 MQ 集群互聯(lián)徒扶。

遠程模式

如圖所示,有兩個異地的 MQ 集群(可以是更多的集群)根穷,當(dāng)用戶在地區(qū) 1 這里下單了姜骡,系統(tǒng)發(fā)消息到 1 區(qū)的 MQ 服務(wù)器导坟,發(fā)現(xiàn) MQ 服務(wù)已超過設(shè)定的閾值,負載過高圈澈,這條消息就會被轉(zhuǎn)到 地區(qū) 2 的 MQ 服務(wù)器上惫周,由 2 區(qū)的去執(zhí)行后面的業(yè)務(wù)邏輯,相當(dāng)于分?jǐn)偽覀兊姆?wù)壓力康栈。

? ? 在使用了 shovel 插件后递递,模型變成了近端同步確認(rèn),遠端異步確認(rèn)的方式啥么,大大提高了訂單確認(rèn)速度登舞,并且還能保證可靠性。

shovel 模式拓撲圖

? ? 如上圖所示悬荣,當(dāng)我們的消息到達 exchange菠秒,它會判斷當(dāng)前的負載情況以及設(shè)定的閾值,如果負載不高就把消息放到我們正常的 warehouse_goleta 隊列中隅熙,如果負載過高了稽煤,就會放到 backup_orders 隊列中。backup_orders 隊列通過 shovel 插件與另外的 MQ 集群進行同步數(shù)據(jù)囚戚,把消息發(fā)到第二個 MQ 集群上酵熙。

? ? 這是 rabbitMQ 比較早期的架構(gòu)模型了,現(xiàn)在很少使用了驰坊。

shovel 集群的配置匾二,首先啟動 rabbitmq 插件,命令如下:

????rabbitmq-plugins enable amqp_client

????rabbitmq-plugins enable? rabbitmq_shovel

????在 /etc/rabbitmq/ 目錄下創(chuàng)建 rabbitmq.config 文件拳芙。注意察藐,我們源服務(wù)器和目的地服務(wù)器都使用這個相同的配置文件。

????具體配置如下

3. 鏡像模式

????非常經(jīng)典的 mirror 鏡像模式舟扎,保證 100% 數(shù)據(jù)不丟失分飞。在實際工作中也是用得最多的,并且實現(xiàn)非常的簡單睹限,一般互聯(lián)網(wǎng)大廠都會構(gòu)建這種鏡像集群模式譬猫。

????mirror 鏡像隊列,目的是為了保證 rabbitMQ 數(shù)據(jù)的高可靠性解決方案羡疗,主要就是實現(xiàn)數(shù)據(jù)的同步染服,一般來講是 2 - 3 個節(jié)點實現(xiàn)數(shù)據(jù)同步。對于 100% 數(shù)據(jù)可靠性解決方案叨恨,一般是采用 3 個節(jié)點柳刮。

????集群架構(gòu)如下

?mirror 鏡像隊列

????如上圖所示,用 KeepAlived 做了 HA-Proxy 的高可用,然后有 3 個節(jié)點的 MQ 服務(wù)秉颗,消息發(fā)送到主節(jié)點上痢毒,主節(jié)點通過 mirror 隊列把數(shù)據(jù)同步到其他的 MQ 節(jié)點,這樣來實現(xiàn)其高可靠站宗。

4. 多活模式

????也是實現(xiàn)異地數(shù)據(jù)復(fù)制的主流模式闸准,因為 shovel 模式配置比較復(fù)雜,所以一般來說梢灭,實現(xiàn)異地集群的都是采用這種雙活 或者 多活模型來實現(xiàn)的。這種模式需要依賴 rabbitMQ 的 federation 插件蒸其,可以實現(xiàn)持續(xù)的敏释,可靠的 AMQP 數(shù)據(jù)通信,多活模式在實際配置與應(yīng)用非常的簡單摸袁。

????rabbitMQ 部署架構(gòu)采用雙中心模式(多中心)钥顽,那么在兩套(或多套)數(shù)據(jù)中心各部署一套 rabbitMQ 集群,各中心的rabbitMQ 服務(wù)除了需要為業(yè)務(wù)提供正常的消息服務(wù)外靠汁,中心之間還需要實現(xiàn)部分隊列消息共享蜂大。

多活集群架構(gòu)如下:


????federation 插件是一個不需要構(gòu)建 cluster ,而在 brokers 之間傳輸消息的高性能插件蝶怔,federation 插件可以在 brokers 或者 cluster 之間傳輸消息奶浦,連接的雙方可以使用不同的 users 和 virtual hosts,雙方也可以使用不同版本的 rabbitMQ 和 erlang踢星。federation 插件使用 AMQP 協(xié)議通信澳叉,可以接受不連續(xù)的傳輸。federation 不是建立在集群上的沐悦,而是建立在單個節(jié)點上的成洗,如圖上黃色的 rabbit node 3 可以與綠色的 node1、node2藏否、node3 中的任意一個利用 federation 插件進行數(shù)據(jù)同步瓶殃。


? ? 如上圖所示,federation exchanges 可以看成 downstream 從 upstream 主動拉取消息副签,但是并不是拉取所有消息遥椿,必須是在 downstream 上已經(jīng)明確定義 Bingdings 關(guān)系的 exchange,也就是有實際的物理 queue 來接收消息继薛,才會從 upstream 拉取消息到 downstream 修壕。

????它使用 AMQP 協(xié)議實現(xiàn)代理間通信,downstream 會將綁定關(guān)系組合在一起遏考,綁定/解綁命令將發(fā)送到 upstream 交換機慈鸠。因此,federation exchange 只接收具有訂閱的消息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末青团,一起剝皮案震驚了整個濱河市譬巫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌督笆,老刑警劉巖芦昔,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異娃肿,居然都是意外死亡咕缎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門料扰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凭豪,“玉大人,你說我怎么就攤上這事晒杈∩┥。” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵拯钻,是天一觀的道長帖努。 經(jīng)常有香客問我,道長粪般,這世上最難降的妖魔是什么拼余? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮刊驴,結(jié)果婚禮上姿搜,老公的妹妹穿的比我還像新娘。我一直安慰自己捆憎,他們只是感情好舅柜,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躲惰,像睡著了一般致份。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上础拨,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天氮块,我揣著相機與錄音,去河邊找鬼诡宗。 笑死滔蝉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塔沃。 我是一名探鬼主播蝠引,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了螃概?” 一聲冷哼從身側(cè)響起矫夯,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吊洼,沒想到半個月后训貌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡冒窍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年递沪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片综液。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡区拳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出意乓,到底是詐尸還是另有隱情,我是刑警寧澤约素,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布届良,位于F島的核電站,受9級特大地震影響圣猎,放射性物質(zhì)發(fā)生泄漏士葫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一送悔、第九天 我趴在偏房一處隱蔽的房頂上張望慢显。 院中可真熱鬧,春花似錦欠啤、人聲如沸荚藻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽应狱。三九已至,卻和暖如春祠丝,著一層夾襖步出監(jiān)牢的瞬間疾呻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工写半, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岸蜗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓叠蝇,卻偏偏與公主長得像璃岳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 了解RabbitMQ集群架構(gòu) 主備模式 實現(xiàn)RabbitMQ的高可用集群矾睦,一般在并發(fā)和數(shù)據(jù)量不高的情況下晦款,這種模式...
    匆匆歲月閱讀 19,076評論 1 24
  • 利用RabbitMQ集群橫向擴展能力,均衡流量壓力枚冗,讓消息集群的秒級服務(wù)能力達到百萬缓溅,Google曾做過此類實驗;...
    有貨技術(shù)閱讀 3,468評論 0 1
  • 關(guān)于消息隊列赁温,從前年開始斷斷續(xù)續(xù)看了些資料坛怪,想寫很久了,但一直沒騰出空股囊,近來分別碰到幾個朋友聊這塊的技術(shù)選型袜匿,是時...
    預(yù)流閱讀 584,740評論 51 786
  • RabbitMQ 簡介 MQ 消息隊列,上承生產(chǎn)者稚疹,下接消費者居灯。從生產(chǎn)者側(cè)獲取消息,然后將消息轉(zhuǎn)發(fā)給消費者内狗。由此可...
    2205閱讀 3,498評論 1 11
  • 狗娃今年四十有三怪嫌,這不過完春節(jié),他只身從農(nóng)村來到城市柳沙,組建了一支屬于自己的裝修隊岩灭。他用花了200塊買來的一個二手舊...
    山風(fēng)小語閱讀 565評論 2 5