日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ 镜像集群之同步策略_专栏讲解

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ 镜像集群之同步策略_专栏讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 一、 基礎知識汲取
            • 1.1. 鏡像集群簡述
            • 1.2. 策略參數說明
            • 1.3. 策略案例
          • 二、HA mode 同步方式
            • 2.1. 參數說明
            • 2.2. 案例
            • 2.3. 命令終端形式
            • 2.4. MQ管控臺設置
            • 2.5. 隊列同步
            • 2.5. 優缺點
          • 三、Ha async mode 同步方式(推薦使用)
            • 3.1. 參數說明
            • 3.2. 案例
            • 3.3. 命令終端形式
            • 3.4. MQ管控臺設置
          • 四、ha-mode:nodes鏡像到到集群中指定節點
            • 4.1. 參數說明
            • 4.2. 案例
            • 4.3. 命令終端形式
            • 4.4. MQ管控臺設置
          • 五、策略區配正則
            • 5.1. 以LFY_開頭的隊列應用此策略
            • 5.2. 以_LOG結尾的隊列應用此策略
            • 5.3. 第3種,以QUEUE_開頭的隊列應用此策略。但是指定同步的節點,是第2種 的演化形式

一、 基礎知識汲取
1.1. 鏡像集群簡述

鏡像集群模式是在RabbitMQ Cluster默認集群的基礎上添加策略搭建完成的

RabbitMQ默認集群模式,并不包管隊列的高可用性,盡管隊列信息,交換機、綁定這些可以復制到集群里的任何一個節點,然則隊列內容不會復制,固然該模式解決一項目組節點壓力,但隊列節點宕機直接導致該隊列無法應用,只能守候重啟,所以要想在隊列節點宕機或故障也能正常應用,就要復制隊列內容到集群里的每個節點,須要創建鏡像隊列。
跟普通集群模式不一樣的是,在鏡像集群模式下,你創建的 queue,無論元數據還是 queue 里的消息都會存在于多個實例上,就是說,每個 RabbitMQ 節點都有這個 queue 的一個完整鏡像,包含 queue 的全部數據的意思。然后每次你寫消息到 queue 的時候,都會自動把消息同步到多個實例的 queue 上。

1.2. 策略參數說明
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]-p Vhost: 可選參數,針對指定vhost下的queue進行設置Name: policy的名稱Pattern: queue的匹配模式(正則表達式)Definition:鏡像定義,包括三個部分ha-mode, ha-params, ha-sync-modeha-mode:指明鏡像隊列的模式,有效值為 all/exactly/nodesall:表示在集群中所有的節點上進行鏡像exactly:表示在指定個數的節點上進行鏡像,節點的個數由ha-params指定nodes:表示在指定的節點上進行鏡像,節點名稱通過ha-params指定ha-params:ha-mode模式需要用到的參數ha-sync-mode:進行隊列中消息的同步方式,有效值為automatic和manualpriority:可選參數,policy的優先級請注意一個事實,鏡像配置的pattern 采用的是正則表達式匹配,也就是說會匹配一組。
1.3. 策略案例

常見的3中設置:

#格式:rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority] #第1種 rabbitmqctl set_policy policy3l "^" '{"ha-mode":"all"}' #第2種 rabbitmqctl set_policy policy2 "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' #第3種 rabbitmqctl set_policy -p "/" policy3 "^QUEUE" '{"ha-mode":"nodes","ha-params":["rabbit@mq-002","rabbit@mq-003"],"ha-sync-mode":"automatic"}'
二、HA mode 同步方式
2.1. 參數說明

One of all (mirror to all nodes in the cluster), exactly (mirror to a set number of nodes) or nodes (mirror to an explicit list of nodes). If you choose one of the latter two, you must also set ha-params.
HA mode的值共有三個

.all:鏡像同步到集群隊列的所有節點
.exactly:按個數同步到集群中的一個或多個節點
. nodes:具體的節點名稱
如果選擇后面兩個選項的的值,還需要設置ha-params參數。

2.2. 案例
所有隊列設置為鏡像隊列,即隊列會被復制到集群各個節點, 各個集群節點交換機、隊列、隊列內容都保持一致。
2.3. 命令終端形式
rabbitmqctl set_policy policy3l "^" '{"ha-mode":"all"}'
2.4. MQ管控臺設置

2.5. 隊列同步

集群節點宕機或停電重啟后,queue-1隊列需要手動同步

rabbitmqctl sync_queue queue-1
2.5. 優缺點

自動同步交換機隊列,但是集群某節點宕機或者停電,都需要手動同步,有點麻煩,萬一忘了怎么辦呢?對吧

三、Ha async mode 同步方式(推薦使用)
3.1. 參數說明

這個需要詳細說明的,默認的情況下。當節點斷線后那么這個節點就已經是落后的版本,當我們再去啟動節點的時候數據我們需要去手動的同步,這自然是不好的,做到自動化是最完美的,所以設置成automatic是最佳選擇

新建策略ha-all,ha-mode: all 鏡像到集群中所有的節點
Pattern: ^
Apply to :Exchanges and queues
ha-mode: all //應用于所有節點
ha-sync-mode:automatic
Priority 0

3.2. 案例
所有隊列設置為鏡像隊列,即隊列會被復制到集群各個節點, 各個集群節點交換機、隊列、隊列內容都保持一致。
3.3. 命令終端形式
rabbitmqctl set_policy policy2 "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
3.4. MQ管控臺設置


ha-all應用效果
queue-1節點后的+2表示鏡像到2個節點,因為ha-mode:all,共有集群共有三個節點,+2表示將隊列鏡像到另外兩個節點

四、ha-mode:nodes鏡像到到集群中指定節點
4.1. 參數說明

新建策略policy3,
Pattern: ^QUEUE_
Apply to :queues
Definition
ha-mode: nodes
ha-params: rabbit@mq-002
rabbit@mq-003
ha-sync-mode: automatic
Priority 0

4.2. 案例
所有隊列設置為鏡像隊列,即隊列會被復制到集群指定節點, 各個集群節點交換機、隊列、隊列內容都保持一致。
4.3. 命令終端形式
rabbitmqctl set_policy -p "/" policy3 "^QUEUE" '{"ha-mode":"nodes","ha-params":["rabbit@mq-002","rabbit@mq-003"],"ha-sync-mode":"automatic"}'
4.4. MQ管控臺設置

五、策略區配正則

5.1. 以LFY_開頭的隊列應用此策略

5.2. 以_LOG結尾的隊列應用此策略

5.3. 第3種,以QUEUE_開頭的隊列應用此策略。但是指定同步的節點,是第2種 的演化形式

總結

以上是生活随笔為你收集整理的RabbitMQ 镜像集群之同步策略_专栏讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。