使用说明

本文为您介绍全球消息备份的操作指导、页面相关属性介绍以及常见问题,以帮助您快速了解使用相关功能。

前提条件

已创建云消息队列 RocketMQ 版实例。版本要求:

  • 云消息队列 RocketMQ 版4.0系列铂金版。

  • 云消息队列 RocketMQ 版5.0系列专业版、铂金版。

本文以源集群和目标集群均为云消息队列 RocketMQ 版5.0系列实例为例进行说明。

计算规格选择建议

使用全球消息备份时,需考虑备份任务源以及目标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峰值可根据业务需要的处理速度进行调整。

创建全球消息备份任务

说明

首次使用全球消息备份时,会弹出阿里云服务授权 - RocketMQ 全球消息备份的对话框,单击确认后将自动创建目标服务的关联角色AliyunServiceRoleForRMQDisasterRecovery,以便在云消息队列 RocketMQ 版中实现全球消息备份功能。更多信息,请参见服务关联角色

  1. 登录云消息队列 RocketMQ 版控制台
  2. 在左侧导航栏,单击全球消息备份,然后单击创建任务

  3. 创建任务页面,填写以下信息,主要配置如下,其余可按需配置,然后单击创建

    image

    源集群与目标集群的不同集群类型配置,请参见下表:

    消息队列 RocketMQ 版

    配置项

    说明

    配置示例

    版本

    选择云消息队列 RocketMQ 版实例版本。

    • 4.0系列实例

    • 5.0系列实例

    5.0系列实例

    地域

    选择云消息队列 RocketMQ 版实例的地域。

    华东1(杭州)

    实例

    选择云消息队列 RocketMQ 版实例。

    rmq-cn-778***

    认证模式

    • 无需配置

    • ACL身份识别

    ACL身份识别

    用户名

    选择用户名。

    yS8x01****

    过滤条件系统配置

    • key:过滤条件是消费端通过SQL92过滤消息的条件。因源、目标集群有全量消息数据,当消费端不设置过滤条件时,消费端将消费全量数据;当消费端设置过滤条件时,可实现仅消费源或目标集群消息。该Key在消息同步时,会注入到消息自定义属性UserProperty中。请避免与业务需要的属性相冲突。

    • 源集群Value:源集群向目标集群同步消息时,系统注入的Key的值。可通过如下方式获取:

      Map<String, String> properties = messageView.getProperties();
      String Value = properties.get("参数Key");
    • 目标集群Value:目标集群向源集群同步消息时,系统注入的Key的值。

    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服务中的实际安全组。

    • 云消息队列 RocketMQ 版实例安全组出方向开放8080、8081端口,网段需包含云消息队列 RocketMQ 版实例的VPC。

    • Apache RocketMQ集群安全组出方向开放9876、10911、10909,网段要包含自建Apache RocketMQ集群所在网段。(如客户修改了nameserver,broker的端口,请开放设置后的端口)。

    sg-2ze4jlbqy2s40pc4****

    过滤条件系统配置

    • key:过滤条件是消费端通过SQL92过滤消息的条件。因源、目标集群有全量消息数据,当消费端不设置过滤条件时,消费端将消费全量数据;当消费端设置过滤条件时,可实现仅消费源或目标集群消息。该Key在消息同步时,会注入到消息自定义属性UserProperty中。请避免与业务需要的属性相冲突。

    • 源集群Value:源集群向目标集群同步消息时,系统注入的Key的值。可通过如下方式获取:

      Map<String, String> properties = messageView.getProperties();
      String Value = properties.get("参数Key");
    • 目标集群Value:目标集群向源集群同步消息时,系统注入的Key的值。

消费端说明

例如,我们配置源集群为上海云消息队列 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);

常见问题

三个实例是否可以互相备份?

可以,全球消息备份的配置是两个实例间的任务配置,三个实例间需要配置三个任务,可以保障每个实例都具备全量数据。

构建双备的实例,是否还可以使用TAG过滤?

TAGSQL过滤方式仅能选择一种。因消费应用需要采用SQL过滤的方式过滤数据,所以建议需要采用TAG过滤的实例统一采用SQL过滤的方式进行消息过滤。具体请参见消息过滤

是否支持已经存在的单备任务变更为双备任务?

如果源集群和目标集群均为云消息队列 RocketMQ 版实例,支持变更,且不影响存量单向任务的运行。如果有一个集群为Apache RocketMQ开源集群,暂时不支持由单备变更为双备,您可能需要删除任务并重新创建。

全球消息备份如何收费?

全球消息备份的同步通道依赖事件总线EventBridge产品,EventBridge的费用请参见计费说明。全球消息备份同步消息数据会占用云消息队列 RocketMQ 版源实例的读性能,目标实例的写性能,您需要额外评估云消息队列 RocketMQ 版的计算规格。

全球消息备份认证模式配置ACL后,为什么没有收到同步的消息?

全球消息备份配置同步任务后,您需要配置需要同步的Topic,系统会对应每一个Topic任务生成系统Group用于消息数据同步,该Group不可被删除,仅当删除任务时,系统会将对应的Group删除。如果您开启了ACL的认证模式,需要对选择的ACL用户设置Topic写入、读取权限和Group读取权限。您可在实例的访问控制 > ACL权限选中该用户,通过资源名设置通配符“*” 赋予该账号全量权限,以降低配置工作量。

全球消息备份任务暂停再恢复,消息数据可以继续同步吗?

可以,暂停再恢复后,全球消息备份任务会从latest acked offset的下一条数据继续同步。但注意不要超过云消息队列 RocketMQ 版消息保存时间。