FiT 基于 Pulsar 在金融在线高并发场景的最佳实践

关于 FiT

腾讯金融科技(Tencent Financial Technology)是腾讯公司提供移动支付与金融服务的综合业务平台。业务领域包括移动支付、投资理财、民生服务和国际化等,作为支付业务的基石和底座,FiT 致力于建设和发展完善的支付平台能力,在微信支付、QQ 钱包等移动支付产品中持续进行功能和服务创新。

FiT 在日常的交易流程中,如信用卡、话费充值、自选股等业务中,需要通过消息中间件来实现上游和下游衔接,以实现广播、过滤、延迟推送等场景。同时由于 FiT 均是交易类场景,对消息产品的高并发、容灾有非常高的要求。比如,在可预期的业务高峰期时,对消息队列集群进行快速扩容;在非预期的可用区故障时,其余可用区可以正常提供服务,保障交易业务的流畅性。于是 TDMQ Pulsar 进入了 FiT 的消息队列技术选型范畴。

TDMQ Pulsar 由于其存算分离的架构,对于计算密集型的业务场景,仅需要添加计算层 Broker ,自动进行 Rebalance;对于海量消息堆积,存储不足时,添加新的 BK 节点即可。在容灾支撑方面,TDMQ Pulsar 专业集群支持 3AZ 跨可用区部署,以确保发生可用区故障时,也能正常提供服务;同时还提供了跨地域冷备功能,支持快速切换接入点解析,实现无需客户端修改接入点地址,而实现跨地域的容灾方案,保障业务的延续性。在场景支撑方面,TDMQ Pulsar 承载了腾讯计费、中国银行等金融场景下的核心交易链路。从各方面来说,都非常匹配 FiT 的需求。

关于 TDMQ Pulsar

腾讯云消息队列 Pulsar 版是基于 Apache Pulsar 自研的消息中间件,具备极好的云原生和 Serverless 特性,计算存储分离的架构使其在扩缩容方面具备良好的底层优势。

在完全兼容社区版的基础上,消息队列 Pulsar 版还提供了重试&死信队列、消息标签过滤、消息轨迹等高级特性。

目前消息队列 Pulsar 版已经有较大规模的应用,如王者荣耀、猫眼、微民保险、QQ 音乐、领星、长安汽车等,以及包括腾讯计费绝大部分场景,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。

FiT 基于 Pulsar 的消息中间件实践

标准模型-发布订阅

第一类使用场景,是标准的 pub - sub 模式,生产者生产一条消息,任意一个消费者成功消费即可。在部署方面,客户端的生产者和消费者均解耦部署。

限定模型-消息标签过滤+自动创建订阅

第二类场景,限定模型,是使用了 TAG 消息过滤的方式,限定消息只能在某一个客户端消费。

FiT 采用单元化(SET)架构。在该场景中的业务消息,会按照一定的规则(如 UIN 等)进行分片,并要求消息限定在某个目标 SET 中消费。

如上图所示,SET 1 中生产者生产消息时,给消息打上「SET 1」的 TAG;消费时,仅消费有「SET 1」TAG 的消息。另外,Pulsar 可以支持自动创建订阅,FiT 使用该能力实现了一套插件,将 SET 做为环境变量注入到启动容器中,这样实现方式极大的方便了业务自定义配置要消费的消息,仅需要调整环境变量即可,而不需要改动业务代码。

扩散模型

第三类场景,扩散模型。在消息生产消费比例为 1:N 时,需要将业务请求,异步「扩散」到其他的多个 SET 中。

基于自动创建订阅的功能,FiT 插件实现在同一个 Topic 下创建多个订阅,灵活的根据业务需求来定义下游消息的客户端。

消息(跨集群)复制

在消息容灾场景下,FiT 基于消息复制组件,配置消息复制关系,自动将消息复制到对端的 Pulsar 集群。同一个复制对象,在不同地域的两个集群中名称需要保持一致,包括 Topic 名称、角色名称及相应的密钥等。如此,可保障当其中一个地域发生故障时,通过接入层的流量调度,将流量调度至另外一个集群。

客户评价

FiT 架构师:

得益于 TDMQ Pulsar 高吞吐、低延迟的能力,FiT 金融产品业务迁移到 TDMQ Pulsar 后,消息从生产者到消费者的耗时缩短了大约80%,消息积压情况大大缓解,积压数量减少了70%。TDMQ Pulsar 延迟消息作用于消息维度,方便业务根据自身场景对每条消息设置不同的延时时间,如延迟通知、延迟核对等。TDMQ Pulsar 运维简单,业务高峰期需要集群扩容时,在控制台一键点击升配即可,业务层无感。TDMQ Pulsar 技术支持专业迅速,及时响应业务需求解决 FiT 业务场景的痛点,如支持接入外部监控、支持灵活的消息过滤功能,较好地支撑了 FiT 业务。

总结展望

下一步,FiT 金融产品业务将继续切量至 TDMQ Pulsar,预计 2024年基本完成迁移。并且 FiT 由于承载了微信支付、银行等国民级支付产品,计划在未来实现多个自建机房的条带化部署,届时 TDMQ Pulsar 也将属地化部署(私有化部署),并作为其交易业务的核心链路。

同时,TDMQ Pulsar 版将继续打磨产品能力,服务好包含 FiT 在内的广大用户,近期我们将推出以下新功能:

  1. 接入外部监控 Prometheus:支持将专业集群的监控数据,接入自建的 Prometheus ,利于用户观测的同时,可以通过监控数据对业务 Workload HPA,使得线上运维更加自动化。

  2. 消息标签过滤支持更灵活的表达式:提供更加灵活的消息标签过滤表达式配置,简化业务侧的架构设计和数据链路。

  3. 更加丰富的应用观测指标:提供更多更丰富的集群性能观测指标,便于客户及时排除业务链路风险,准确定位异常位置。

相关推荐
Chan161 天前
从生产到消费:Kafka 核心原理与实战指南
java·spring boot·分布式·spring·java-ee·kafka·消息队列
茶杯梦轩7 天前
从零起步学习RabbitMQ || 第二章:RabbitMQ 深入理解概念 Producer、Consumer、Exchange、Queue 与企业实战案例
服务器·后端·消息队列
初次攀爬者9 天前
Kafka 基础介绍
spring boot·kafka·消息队列
初次攀爬者9 天前
RocketMQ 消息可靠性保障与堆积处理
后端·消息队列·rocketmq
初次攀爬者10 天前
RocketMQ 集群介绍
后端·消息队列·rocketmq
初次攀爬者10 天前
RocketMQ 基础学习
后端·消息队列·rocketmq
初次攀爬者11 天前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
DemonAvenger13 天前
Kafka性能调优:从参数配置到硬件选择的全方位指南
性能优化·kafka·消息队列
Javatutouhouduan15 天前
RocketMQ是怎么保存偏移量的?
java·消息队列·rocketmq·java面试·消息中间件·后端开发·java程序员
DemonAvenger15 天前
深入理解Kafka分区策略:实现数据均衡分布的最佳实践
性能优化·kafka·消息队列