您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
04 節點訂閱鏈接怎么用不需(消息隊列之RabbitMQ-分布式部署)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-23 17:23:01【】8人已围观
简介來通訊。很明顯無論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 將隊列中的消息移交給另一個集群。
很赞哦!(485)
相关文章
- 05 青島銘聰國際貿易有限公司(關于塑料制品的起名。)
- 01 買粉絲買粉絲繳費步驟(怎樣用買粉絲繳費新農合?)
- 01 買粉絲買粉絲管理員怎么確認(買粉絲買粉絲管理員身份確認)
- 05 首都經濟貿易大學會計專業排名(2023對外經濟貿易大學專業排名最好的專業有哪些?)
- 01 買粉絲買粉絲管理者和運營者的區別(買粉絲公眾賬號的管理員與運營者不能是同一賬號嗎?)
- 06 2023年第二季度外貿工作意見和建議怎么寫(2023年終工作總結(5篇))
- 05 高校買粉絲買粉絲運營分析報告(手機買粉絲使用者營銷案例分析?)
- 05 食品進出口貿易公司簡介(商貿公司簡介范文大全)
- 06 2023年中秋國慶買粉絲文案(2023元旦買粉絲文案大全錦集131條)
- 01 買粉絲買粉絲背景音樂不全(買粉絲如何增加背景音樂?)
热门文章
站长推荐
06 19世紀英國自由貿易政策具體條例(19世紀的英國,靠自由貿易走向巔峰,為何又走向衰落?)
05 預定艙位用國際貿易術語怎么說(信用證操作中,出口商需要做哪些單據?)
01 買粉絲買粉絲紅色背景框(買粉絲公眾賬號里面的框框是怎么設置的)
01 買粉絲買粉絲管理員和運營者可以是一個人嗎(買粉絲公眾賬號的管理員與運營者不能是同一賬號嗎?)
01 買粉絲買粉絲管理員密碼忘了怎么辦(買粉絲公眾賬號管理員賬號忘記了怎么辦?)
01 買粉絲買粉絲維護主要是做什么(買粉絲買粉絲是干什么的?)
05 飼料原料貿易商生存情況(經營飼料宗旨怎么寫)
06 2023年我國對外貿易存在的風險有哪些(中國將全面取消制造業領域外資準入限制措施,這意味著什么?將產生哪些影響?)