百度智能云专享版消息服务 for Kafka 实践:业务迁移
文档简介:
方案一:
先将生产消息的业务迁移到新的Kafka,原Kafka不会有新的消息生产。待原有Kafka实例的消息全部消费完成后,再将消费消息业务迁移到新的Kafka,开始消费新Kafka实例的消息。
方案一
先将生产消息的业务迁移到新的Kafka,原Kafka不会有新的消息生产。待原有Kafka实例的消息全部消费完成后,再将消费消息业务迁移到新的Kafka,开始消费新Kafka实例的消息。
- 创建专业版Kafka集群,在集群中创建好 topic 等资源
-
切换生产者写入地址:
- 将生产客户端的Kafka连接地址修改为新Kafka实例的连接地址。
- 重启生产业务,使得生产者将新的消息发送到新Kafka实例中。
- 观察各消费组在原Kafka的消费进度,直到原Kafka中数据都已经被消费完毕。
-
切换消费者
- 将消费客户端的Kafka连接地址修改为新Kafka实例的连接地址。
- 重启消费业务,使得消费者从新Kafka实例中消费消息。
- 观察消费者是否能正常从新 Kafka 实例中获取数据。
- 迁移结束。
本方案为业界通用的迁移方案,操作步骤简单,迁移过程由业务侧自主控制,整个过程中消息不会存在乱序问题,适用于对消息顺序有要求的场景。但是该方案中需要等待消费者业务直至消费完毕,存在一个时间差的问题,部分数据可能存在较大的端到端时延。
方案二
指消费者业务启用多个消费客户端,分别向原Kafka和新Kafka实例消费消息,然后将生产业务切到新Kafka实例,这样能确保所有消息都被及时消费。
- 创建专业版Kafka集群,在集群中创建好topic等资源
- 启动新的消费客户端,配置Kafka连接地址为新Kafka实例的连接地址,消费新Kafka实例中的数据。(原有消费客户端需继续运行,消费业务同时消费原Kafka与新Kafka实例的消息。)
-
切换生产者写入地址:
- 修改生产客户端,Kafka连接地址改为新Kafka实例的连接地址。
- 重启生产客户端,将生产业务迁移到新Kafka实例中。
- 生产业务迁移后,观察连接新Kafka实例的消费业务是否正常。
- 等待原Kafka中数据消费完毕,关闭原有消费业务客户端。
- 迁移结束。
迁移过程由业务自主控制。本方案中消费业务会在一段时间内同时消费原Kafka和新Kafka实例。由于在迁移生产业务之前,已经有消费业务运行在新Kafka实例上,因此不会存在端到端时延的问题。但在迁移生产的开始阶段,同时消费原Kafka与新Kafka实例,会导致部分消息之间的生产顺序无法保证,存在消息乱序的问题。此场景适用于对端到端时延有要求,却对消息顺序不敏感的业务。