消息队列 RocketMQ 版 消息服务数据流迁移

通过 元数据迁移任务,客户可以将自建的 RocketMQ 集群的元数据同步到 TDMQ RocketMQ 上。在元数据迁移完成之后,客户需要修改生产者集群和消费者集群的接入信息,将生产者集群和消费者集群从旧自建的 RocketMQ 迁移到 TDMQ RocketMQ 版上,最终实现所有的消息收发业务都在新的 RocketMQ 集群上进行。

相关产品
消息队列 RocketMQ 版 产品页,含版本规格、价格与购买入口。

一、操作背景

注意:迁移消息服务只迁移消息生产和消费链路,并不会迁移原 RocketMQ 集群上的消息数据。目前仅适用于迁移到专享集群,共享集群会在公测结束后开始支持。

二、迁移步骤

这里说明使用双读双写和分批发布方案迁移消息服务的方法。迁移过程中,生产者集群和消费者集群可并行在原 RocketMQ 集群和新 RocketMQ 集群上同时生产或消费消息,不会因迁移产生数据积压,业务可平滑过渡。具体方案和操作流程,请参见下图。

具体步骤如下:

1. TDMQ RocketMQ 集群创建完成,相关元数据迁移完成,并在控制台获取需要的客户端信息,如新集群的接入点 AccessKey 和 SecretKey 。

2. 切换消费者集群中部分节点的接入信息,将这部分消费者接入到新版 RocketMQ 集群。切换的这部分消费者将消费新版 RocketMQ 集群中的消息,剩余消费者继续消费原 RocketMQ 集群中的消息。

3. 切换生产者集群中部分节点的接入信息,将这部分生产者接入到新版 RocketMQ。切换的这部分生产者将发送消息到新版 RocketMQ 集群中;剩余的生产者还是将消息发送到旧版 RocketMQ 集群中。为了防止消息的重复或丢失,可以事先做好消息消费的幂等逻辑。

4. 将剩余的生产者全部接入到新的 RocketMQ 集群上。此时所有消息将全部被发送到新版 RocketMQ 集群中。

5. 检查原 RocketMQ 集群是否有堆积的消息没有消费,确认原 RocketMQ 集群没有堆积或者未处理的消息后,将剩余的消费者全部接入到新版 RocketMQ 集群上。完成整个数据流的迁移操作。

三、顺序问题

由于集群切换,切换过程中,消息顺序问题无法保证;切换的过程中会导致局部乱序。

四、消息重复

理论上不会重复,极端情况下会发生,例如切换过程中,消费者消费了消息,但是还未给服务端(原 RocketMQ 集群)ACK,这时会导致该消息进入重试队列导致重复消费。对消息做幂等处理逻辑可以规避这个问题,

五、消费延迟

读切换过程中,由于分区重新分配,需要进行队列和消费者客户端间的 rebalance,可能导致短暂的消费延迟现象。遇到该情况无需额外操作,切换完成后即可恢复。

赞 (0)
上一篇 4天前
下一篇 4天前