您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
04 節點訂閱鏈接怎么用不需(消息隊列之RabbitMQ-分布式部署)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-22 17:09:21【】4人已围观
简介來通訊。很明顯無論RabbitMQ部署在海外還是國內,另一方一定得忍受連接上的延遲。因此我們可以在海外和國內各部署一個MQ,這樣一來海外連接海外的MQ,國內連接國內,就不會有連接上的延遲了。但這樣還會
很明顯無論RabbitMQ部署在海外還是國內,另一方一定得忍受連接上的延遲。因此我們可以在海外和國內各部署一個MQ,這樣一來海外連接海外的MQ,國內連接國內,就不會有連接上的延遲了。
但這樣還會有問題,假設某生產者將消息存入海外MQ中的某個隊列 queueB , 在國內的服務想要消費 queueB 消息,消息的流轉及確認必然要忍受較大的網絡延遲 ,內部編碼邏輯也會因這一因素變得更加復雜。
此外,服務可能得維護兩個MQ的配置,比如國內服務在生產消息時得使用國內MQ,消費消息時得監聽海外MQ的隊列,降低了系統的維護性。
可能有人想到可以用集群,但是RabbitMQ的集群對延遲非常敏感,一般部署在局域網內,如果部署在廣域網可能會產生網絡分區等等問題。
這時候,Federation就派上用場了。它被設計成能夠容忍不穩定的網絡連接情況,完全能夠滿足這樣的場景。
那使用Federation之后是怎樣的業務流程呢?
首先我們在海外MQ上定義exchangeA,它通過路由鍵“rkA”綁定著queueA。然后用Federation在exchangeA上建立一條 單向 連接到國內RabbitMQ,Federation則自動會在國內RabbitMQ建立一個exchangeA交換器(默認同名)。
這時候,如果部署在國內的client C在國內MQ上publish了一條消息,這條消息會通過 Federation link 轉發到海外MQ的交換器exchangeA中,最終消息會存入與 exchangeA 綁定的隊列 queueA 中,而client C也能立即得到返回。
實際上,Federation插件還會在國內MQ建立一個內部的交換器:exchangeA→ broker3 B(broker3是集群名),并通過路由鍵 "rkA"將它和國內MQ的exchangeA綁定起來。接下來還會在國內MQ上建立一個內部隊列federation: exchangeA->broker3 B,并與內部exchange綁定。這些操作都是內部的,對客戶端來說是透明的。
值得一提的是,Federation的連接是單向的,如果是在海外MQ的exchangeA上發送消息是不會轉到國內的。
這種在exchange上建立連接進行聯邦的,就叫做 聯邦交換器 。一個聯邦交換器接收上游(upstream)的信息,這里的上游指的是其他的MQ節點。
對比前面舉的例子,國內MQ就是上游,聯邦交換器能夠將原本發送給上游交換器的消息路由到本地的某個隊列中。
有聯邦交換器自然也有聯播隊列,聯邦隊列則允許一個本地消費者接收到來自上游隊列的消息 。
如圖,海外MQ有隊列A,給其設置一條鏈接,Federation則自動會在國內RabbitMQ建立一個隊列A(默認同名)。
當有消費者 Cli買粉絲A連接海外MQ并消費 queueA 中的消息時,如果隊列 queueA中本身有若干消息堆積,那么 ClientA直接消費這些消息,此時海外MQ中的queueA并不會拉取國內中的 queueA 的消息;如果隊列 queueA中沒有消息堆積或者消息被消費完了,那么它會通過 Federation link 拉取上游隊列 queueA 中的消息(如果有消息),然后存儲到本地,之后再被消費者 ClientA進行消費 。
首先開啟Federation 功能:
值得注意的是,當需要在集群中使用 Federation 功能的時候,集群中所有的節點都應該開啟 Federation 插件。
接下來我們要配置兩個東西:upstreams和Policies。
每個 upstream 用于定義與其他 Broker 建立連接的信息。
通用參數如下:
然后定義一個 Policy, 用于匹配交換器:
^exchange 意思是將匹配所有以exchange名字開頭的交換器,為它們在上游創建連接。這樣就創建了一個 Federation link。
Shovel是RabbitMQ的一個插件, 能夠可靠、持續地從一個Broker 中的隊列(作為源端,即source )拉取數據并轉發至另一個Broker 中的交換器(作為目的端,即destination )。作為源端的隊列和作為目的端的交換器可以同時位于同一個 Broker 上,也可以位于不同的 Broker 上。
使用Shovel有以下優勢:
使用Shovel時,通常源為隊列,目的為交換器:
但是,也可以源為隊列,目的為隊列。實際也是由交換器轉發,只不過這個交換器是默認交換器。配置交換器做為源也是可行的。實際上會在源端自動新建一個隊列,消息先存在這個隊列,再被Shovel移走。
使用Shovel插件命令:
Shovel 既可以部署在源端,也可以部署在目的端。有兩種方式可以部署 Shovel:
其主要差異如下:
來看一個使用Shovel治理消息堆積的案例。
當某個隊列中的消息堆積嚴重時,比如超過某個設定的閾值,就可以通過 Shovel 將隊列中的消息移交給另一個集群。
很赞哦!(587)
相关文章
- 01 我最喜歡的社交媒體英語作文抖音(抖音社交媒體鏈接怎么填寫才正確)
- 01 youtube官網網頁版下載視頻怎么導出gif(PS軟件各個版本區別大嗎?哪個版本最適合新手?)
- 01 youtube官網網頁版下載視頻到mp4(怎么從網頁上下載視頻)
- 01 戴森吹風機海外版可以買嗎(戴森吹風機有德國的還有英國的,哪一款才是正品?)
- 01 我國網紅經濟發展現狀和發展(網紅經濟不能給社會帶來太大的經濟影響,它到底能維持多久?)
- 01 youtube官網網頁版下載電腦版本買粉絲下載(如何下載ted演講稿)
- 01 youtube官網網頁版下載視頻到mp3下載(如何從Youtube及其他視頻網站下載視頻?)
- 01 我國遭受的貿易壁壘案例(技術性貿易壁壘案例)
- 01 youtube官網網頁版下載視頻在手機上(如何從Youtube及其他視頻網站下載視頻?)
- 01 youtube官網網頁版下載視頻插件edge(給新手的ADOBE軟件不完全科普指南!)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:内蒙古锡林郭勒苏尼特左旗
工作室:小组
Email:[email protected]
热门文章
站长推荐
01 youtube官網網頁版下載視頻到mp4格式(怎么從網頁上下載視頻)
01 我對社交媒體的看法作文(描述你最喜歡的社交媒體英文)
01 youtube官網網頁版下載電腦端上傳文件給(推薦一個好用的視頻剪輯軟件,)
01 youtube官網網頁版下載電腦正版官方下載注冊(怎么在youtube上下載視頻)
01 我國蔬菜出口貿易現狀分析(我國農產品出口面臨綠色壁壘的主要原因有哪些)
01 手機facebook怎么開直播(一個平板一個手機怎么直播游戲?)
01 youtube官網網頁版下載視頻到mp3聽不(為什么我的youtube看不了視頻?)
01 手機qq關注的買粉絲在哪里(手機qq買粉絲在哪里添加)