RabbitMQ三種分布式策略總結

2021-09-10 03:47:56 字數 867 閱讀 3535

規約:

exchange 交換機

queue      佇列

broker      中間伺服器/伺服器

cluster     集群

node       節點

route       路由

rabbitmq可以通過三種方法部署分布式系統:集群、聯盟(federation)和shovel。

集群通過連線多個機器組成單個邏輯中間伺服器。機器之間通訊要借助於erlang的訊息傳輸,要求集群中所有節點必須有相同的erlang cookie;節點之間的網路必須是可靠的,且執行相同版本的rabbitmq和erlang。

虛擬主機、交換機、使用者資訊和許可權會自動映象到集群中各個節點。佇列可能位於單個節點或映象到多個節點。連線到任意節點的客戶端能夠看到集群中所有佇列,即使該佇列不位於連線節點上。

通常可以使用集群來提高可靠性和吞吐量,前提是在分布同乙個區域內的機器,不支援網路分段。

聯盟允許單台伺服器上的交換機或佇列接收發布到另一台伺服器上交換機或佇列的訊息,可以是單獨機器或集群。伺服器之間通過amqp協議通訊,因此兩個聯盟交換機或聯盟佇列要求設定相應的使用者許可權。

聯盟交換機之間由單向點對點鏈結關聯,預設訊息只會由聯盟鏈結**一次,但允許有更複雜的路由拓撲來提高**次數。訊息也可以不進行**;如果訊息到達聯盟交換機之後不會路由到佇列,那麼它再也不會被**。

聯盟佇列類似於單向點對點連線,訊息會在聯盟佇列之間**任意次,直到被消費者接受。

通常使用聯盟來連線internet上的中間伺服器,用作訂閱分發訊息或工作佇列。

shovel連線方式與聯盟的連線方式類似,但它工作在更低層次。shovel接受佇列上的訊息,**到另一台伺服器上的交換機。

shovel和聯盟類似,但它比聯盟提供更多控制。

三種分布式鎖

zookeeper 1 基於zookeeper瞬時有序節點實現的分布式鎖,其主要邏輯如下 該圖來 自于ibm 大致思想即為 每個客戶端對某個功能加鎖時,在zookeeper上的與該功能對應的指定節點的 目錄下,生成 乙個唯 一的瞬時有序節點。判斷是否獲取鎖的 方式很簡單,只需要判斷有序節點中序號最 ...

SQL Server 分布式查詢(暫且三種)

1 select from servername.dbo.tablename 2 select from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 where 條件 解除sql阻止 sql se...

RabbitMQ分布式配置

通過增加更多的節點來擴充套件訊息通訊的吞吐量 1 集群配置方式 federation 應用於廣域網,允許單台伺服器上的交換機或佇列接收發布到另一台伺服器上交換機或佇列的訊息,可以是單獨機器或集群。federation佇列類似於單向點對點連線,訊息會在聯盟佇列之間 任意次,直到被消費者接受。通常使用f...