基于 TDMQ for Apache Pulsar 的跨地域复制实践
导语
自2024年9月6日起,TDMQ Pulsar 版专业集群支持消息、元数据两级跨地域复制功能,消息级复制解决用户全球地域的数据统一归档问题,元数据级复制提供解决用户核心业务跨地域容灾的场景。
用户在跨地域场景遇到的疑问和挑战
在跨地域相关场景下,通常有两大类原始需求:
跨地域容灾
TDMQ Pulsar 版目前支持在同一地域下进行跨可用区部署,这种部署方式能够在一定程度上提高系统的可用性和容灾能力。
如上图所示,在广州地域内的3个可用区部署了 TDMQ Pulsar 版集群。如果广州的某个可用区无法使用,系统仍然可以依靠其他两个可用区继续提供服务。
然而,金融级客户通常需要更高的容灾标准,希望能够通过跨地域部署来实现跨地域的容灾,以确保在极端情况下,比如发生自然灾害或网络故障时,也能保证业务的连续性和数据的安全性。
如上图展示的架构,用户业务可以在主地域进行日常的生产和消费,同时在其他地域进行数据备份和灾备。这种架构能够实现当一个数据中心发生故障时,迅速切换到另一个地域的数据中心,确保业务不中断,以保护数据的完整性和可用性。
全球数据归档
这类需求一般来源于国际站用户,例如某客户希望实现流数据的全球跨地域传输和统一数据归档 。具体场景如下图:
不同地域的生产者各自在本地生成数据,并将这些数据发送到对应地域的 TDMQ Pulsar 版集群,这些集群将接收到的数据传输到数据中心的 TDMQ Pulsar 版集群,数据中心收集来自所有地域的数据后,将其聚合在同一个 Topic 中,之后消费者可以从聚合后的数据中读取和处理信息,实现数据的统一归档。
TDMQ Pulsar 版跨地域复制功能介绍
基于以上两类用户需求,TDMQ Pulsar 版提供了跨地域复制的解决方案。
TDMQ Pulsar 专业版基于 GEO Replication 方案,实现跨地域的集群复制,专业集群支持两种类型的复制:
-
元数据级:用于满足用户核心业务跨地域容灾需求,元数据级复制集群的命名空间、Topic、订阅、角色等内容。
-
消息级:解决用户全球地域的数据统一归档问题,消息级复制消息内容、消息顺序、标签、消息类型等。
元数据级复制
元数据级复制用于应对跨地域容灾场景,当发生地域级灾难时,客户能够快速迁移业务,确保业务的连续性。
在正常场景下:业务在 A 地域访问 TDMQ Pulsar 版服务端,用户需要完成两个前置动作:
-
建立跨城网络的连接,通过云联网打通跨地域的 VPC 网络;
-
建立两地的集群元数据同步。
异常发生时:TDMQ Pulsar 版提供域名解析切换功能,将原 A 地域使用的域名指向到目标容灾 B 地域的集群,这样做可避免在客户端修改接入点地址,而实现对容灾 B 地域的集群连接方案,保障业务的延续性。
A 地域异常恢复后:
用户首先需要判断是否要将 B 地域所产生的消息回写至 A 地域,以确保消息的完整性。
接着,用户在 B 地域的集群进行接入点的域名解析切回,切回操作执行后,客户端即可正常访问 A 地域。
消息级复制
TDMQ Pulsar 版消息级复制用于解决数据统一归档问题。
以上海地域复制到北京地域为例。
上海地域的 Pulsar 集群中运行 Replicator 组件,该组件中会启动 Producer-R,绑定了北京地域对端集群的 Topic1,将消息数据用生产者的方式发送到北京机房。具体的复制过程如下:
-
Producer1 生产消息到上海集群 Topic1;
-
上海集群把消息持久化到 BookKeeper;
-
BookKeeper 返回成功后把消息推给 Replicator 的 Cursor;
-
Replicator 的 Cursor 通过 Producer-R 把消息发给北京集群 Topic1;
-
北京集群 Topic1 写入 BookKeeper 成功后给上海集群 Replicator 的 Cursor 回复 ACK,上海机房 Cursor 收到 ACK 后通过 Producer-R 推送下一条消息。
通过这种方式,上海集群的消息就可以被可靠地复制到北京集群,确保数据在两个地域之间的一致性和可用性。这种流程就实现了全球多个地点生成的数据, 能够集中在一个地点进行管理和处理,实现了数据归档操作。
跨地域复制使用指引
-
在目标复制地域创建专业集群,在集群购买界面,需要开启「跨地域复制」开关,并选择数据源集群;
-
通过控制台配置集群的复制链路:
● 复制链路名称:为同步链路定义一个名字。
● 链路类型:选择消息级。
● 源集群选择:选择要进行数据源的 TDMQ Pulsar 版集群。
● 目标集群选择:在不同地域选择创建好的目标集群,此处仅会显示「集群 ID」相同的集群。
● 复制级别:支持集群级、命名空间和 Topic 三个级别:
○ 集群级:适用于集群级的复制。 ○ 命名空间级:适用于两地集群日常都是活跃的,不同的命名空间分布在不同地域。 ○ Topic 级:跨地域复制的最小粒度。
-
创建完成后,消息级的复制任务会进入到监控界面,您可以查阅复制任务的事实复制速率、复制消息堆积等数据。
基于 TDMQ Pulsar 版在金融在线高并发场景的最佳实践
FiT 是腾讯公司提供移动支付与金融服务 的 综合业务平台。业务领域包括 移动支付、投资理财、民生服务和国际化等。
业务需求
FiT 在日常的交易流程中,需要通过 消息中间件 来实现上游和下游衔接,以实现广播、过滤、延迟推送等场景。由于 FiT 均是交易类场景,对消息产品的高并发、容灾均有非常高的要求。
TDMQ Pulsar 版解决方案
在应用实践上,用户选择了 TDMQ Pulsar 版这款产品。
-
标准模型-发布订阅:使用标准的 pub - sub 模式,生产者生产一条消息,任意一个消费者成功消费即可。在部署方面,客户端的生产者和消费者均解耦部署。
-
扩散模型:消息生产消费比例为 1:N ,将业务请求异步「扩散」到其他的多个SET中,实现一端生产,多端消费。
-
限定模型-消息标签过滤+自动创建订阅:使用了 TAG 消息过滤的方式,限定消息只能在某一个客户端消费。消息标签过滤用于对某个 Topic 下的消息进行分类,例如交易流水 Topic 包含了下单流水、支付流水、发货流水等,业务若只想消费者订阅其中一种类别的流水,可在客户端进行 tag 的过滤。
-
跨地域复制:通过配置复制关系,自动将消息复制到对端集群,当其中一个地域发生故障时,通过接入层的流量调度,将流量调度至另外一个集群。确保在发生灾难时,业务能够迅速恢复,保障业务的连续性,降低了灾难发生时的风险和损失。
用户评价
得益于 TDMQ Pulsar 高吞吐、低延迟的能力,FiT 金融产品业务迁移到 TDMQ Pulsar 后,消息从生产者到消费者的耗时缩短了大约80%,消息积压情况大大缓解,积压数量减少了70%。