本文為您介紹Global Replicator的操作指導、頁面相關屬性介紹以及常見問題,以協助您快速瞭解使用相關功能。
前提條件
已建立雲訊息佇列 RocketMQ 版執行個體。版本要求:
-
雲訊息佇列 RocketMQ 版4.0系列執行個體。
說明4.0系列執行個體標準版僅支援單向同步。
-
雲訊息佇列 RocketMQ 版5.0系列執行個體。
本文以源叢集和目的地組群均為雲訊息佇列 RocketMQ 版5.0系列執行個體為例進行說明。
計算規格選擇建議
在使用Global Replicator時,配置完成Topic映射關係後,訊息同步將對執行個體產生額外的TPS開銷,因此需要考慮同步任務源及目標RocketMQ執行個體的收發TPS峰值上限。
建議規格說明:
例如,在未同步的情況下,雲訊息佇列 RocketMQ 版執行個體的發送TPS峰值為10000(次/秒),接收TPS峰值為10000(次/秒)。
建議源執行個體和目標執行個體的TPS配置如下:
|
任務類型 |
源執行個體 |
目標執行個體 |
||||
|
收發TPS峰值上限(次/秒) |
發送TPS峰值(次/秒) |
接收TPS峰值(次/秒) |
收發TPS峰值上限(次/秒) |
發送TPS峰值(次/秒) |
接收TPS峰值(次/秒) |
|
|
單向同步 |
30000 |
10000 |
20000 |
20000 |
10000 |
10000 |
|
雙向同步 |
40000 |
20000 |
20000 |
40000 |
20000 |
20000 |
-
執行個體的收發TPS峰值上限可以在实例详情頁面查看,不同規格執行個體的TPS峰值上限,請參見執行個體規格。
-
目標執行個體接收TPS峰值可根據業務需要的處理速度進行調整。
建立Global Replicator任務
首次使用Global Replicator時,會彈出阿里雲服務授權 - RocketMQ Global Replicator的對話方塊,單擊確認後將自動建立目標服務的關聯角色AliyunServiceRoleForRMQDisasterRecovery,以便在雲訊息佇列 RocketMQ 版中實現Global Replicator功能。更多資訊,請參見服務關聯角色。
步驟一:建立任務
- 登入雲訊息佇列 RocketMQ 版控制台。
-
在左側導覽列,單擊Global Replicator,然後單擊建立任務。
-
在建立任務頁面,填寫以下資訊,主要配置如下,其餘可按需配置,然後單擊建立。
在頁面頂部,任務名稱填寫為
rocket-test,任務類型選擇單向備份:源叢集向目的地組群同步資料,任務描述按需填寫。源叢集和目的地組群分左右兩欄配置,中間以箭頭表示同步方向。源叢集與目的地組群的不同叢集類型配置,請參見下表:
訊息佇列 RocketMQ 版
配置項
說明
配置樣本
版本
選擇雲訊息佇列 RocketMQ 版執行個體版本。
-
4.0系列執行個體
-
5.0系列執行個體
5.0系列執行個體
地域
選擇雲訊息佇列 RocketMQ 版執行個體的地區。
華東1(杭州)
实例
選擇雲訊息佇列 RocketMQ 版執行個體。
rmq-cn-778***
認證模式
-
無需配置
-
ACL身份識別
ACL身份識別
使用者名稱
選擇使用者名稱。
yS8x01****
安全性群組 ID
雲訊息佇列 RocketMQ 版執行個體所在ECS服務中的安全性群組。版本為5.0系列執行個體時配置。
-
入方向:無要求
-
出方向:
-
授權策略:允許
-
協議:自訂TCP
-
訪問目的:網段包含叢集交換器的所有網段;連接埠包含8080和8081。
-
sg-2ze4jlbqy2s40pc4****
過濾條件系統配置
(可選)支援向訊息中添加自訂屬性(UserProperty),消費者可基於SQL92文法訂閱策略實現訊息過濾。
-
Key:UserProperty的Key名
-
源叢集Value:來自源叢集的訊息添加的UserProperty的Value值
-
目的地組群Value:來自目的地組群的訊息添加的UserProperty的Value值
SQL92訂閱過濾樣本如下:
String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目的地組群Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));無
Apache RocketMQ
配置項
說明
配置樣本
存取點
存取點格式為
{網域名稱/IP}:{連接埠號碼}。XX.XX.XX.XX:8080
認證模式
-
無需配置
-
ACL身份識別
ACL身份識別
使用者名稱
根據業務自行填寫。
yS8x01****
密碼
根據業務自行填寫。
F17R4to****
網路設定
-
公網
-
VPC網路
公網
地域
網路設定為VPC網路時配置。選擇Apache RocketMQ所在ECS服務中的地區。
華東1(杭州)
VPC 網路
網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際VPC。
vpc-bp17fapfdj0dwzjkd****
交换机
網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際交換器。
vsw-bp1gbjhj53hdjdkg****
安全性群組 ID
網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際安全性群組。
-
入方向:無要求
-
出方向:
-
授權策略:允許
-
協議:自訂TCP
-
訪問目的:網段包含所有Apache RocketMQ節點所在的網段;連接埠號碼包含所有Apache RocketMQ節點服務的連接埠號碼,預設連接埠號碼包含9876、10911和10909(如果修改了nameserver,broker的連接埠,需設定修改後的連接埠)。
-
sg-2ze4jlbqy2s40pc4****
過濾條件系統配置
(可選)支援向訊息中添加自訂屬性(UserProperty),消費者可基於SQL92文法訂閱策略實現訊息過濾。
-
Key:UserProperty的Key名
-
源叢集Value:來自源叢集的訊息添加的UserProperty的Value值
-
目的地組群Value:來自目的地組群的訊息添加的UserProperty的Value值
SQL92訂閱過濾樣本如下:
String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目的地組群Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));無
-
步驟二:配置Topic映射關係
-
在任務基本資料頁面,單擊左側導覽列的訊息同步任務。
-
單擊批量映射或者添加映射,在彈出的對話方塊中配置需要同步的Topic映射關係。
-
批量映射:配置並勾選所需的Topic映射,然後單擊確定。
-
添加映射:配置所需的Topic映射,然後單擊確定。
說明-
若源叢集類型為Apache RocketMQ,則需要填寫一個用於同步訊息的Group,避免使用正常業務的Group。
-
完成配置Topic映射關係後,訊息才會開始同步。
-
步驟三:(可選)開啟消費進度同步
開啟消費進度同步後,可以將Group消費Topic的當前消費進度同步到目的地組群。詳情請參見消費進度同步。
消費端說明
例如,我們配置源叢集為上海雲訊息佇列 RocketMQ 版執行個體與目的地組群杭州雲訊息佇列 RocketMQ 版執行個體雙向同步的任務。過濾條件的Key設定為Region,源叢集Value設定為Shanghai,目的地組群Value設定為Hangzhou。
上海消費端正常情況下僅消費上海地區的資料,不消費杭州資料,所以採用單個自訂屬性匹配即可。具體請參見事件模式。
-
訂閱訊息,根據單個自訂屬性匹配訊息。
String topic = "topic";
//只訂閱本地區的訊息。
FilterExpression filterExpression = new FilterExpression("Region IS NOT NULL", FilterExpressionType.SQL92);
//因為本地生產應用在發送訊息時並沒有在訊息中設定UserProperty的Key為Region的值,所以Key為Region的自訂屬性為NULL
simpleConsumer.subscribe(topic, filterExpression);
-
訂閱訊息,匹配Topic中的所有訊息,不進行過濾。
String topic = "topic";
//訂閱所有訊息。
FilterExpression filterExpression = new FilterExpression("True", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);