cover_image

海量消息下王者荣耀在 TDMQ Pulsar 版的实践

宋昭文 腾讯云中间件
2024年05月28日 08:01
图片


图片

关于王者荣耀


《王者荣耀》是由腾讯游戏开发的一款运营在 Android、IOS 平台上的 MOBA 类手游,属于多人联机在线竞技类游戏,于2015年11月26日在 Android、IOS 平台上正式公测。上线以来受到广大手游玩家的热爱,目前该游戏在手游排行中处于 TOP 1 的位置。作为中国最火爆的手机游戏,“王者荣耀”,拥有亿级用户体量,千万级日活用户。

而如此庞大用户体量带来的,也是服务端的挑战。如在游戏中产生的海量消息和数据交互,好友上线通知、开始游戏、赠送金币以及核心之一的交易链路,服务端如何敏捷快速实现上述海量消息场景,并解耦业务组件,是系统架构设计的一个难题。


图片

消息队列选型


在游戏的实际运行中,大量的业务场景下存在消息数据交互,业务量有明显的波峰波谷,需要有一款消息队列中间件来承载该业务流程,实现上下游业务组件的松耦合,同时还需要具备灵活的扩展性。TDMQ Pulsar 版进入了王者荣耀团队的技术选型视野。


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


图片

TDMQ Pulsar 版产品介绍


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


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


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


图片


图片

TDMQ Pulsar 版在王者荣耀中的应用方式


弹性能力


得益于存算分离的架构,使得 TDMQ Pulsar 版高度契合云原生,具有极强的可扩展性,为王者荣耀业务量的变化提供快速扩容能力,同时具备的热升级能力,使得扩容时对业务完全透明。


图片


发布订阅


王者荣耀的消息场景下,存在大量的收发比超过「1比2」的情况,即:一处生产多处消费。同时,下游的消费端需要根据「消息标识」来消费指定的消息。


TDMQ Pulsar 版支持多种订阅模式,同时支持 TAG 消息标签过滤,方便王者荣耀的业务端简化业务逻辑处理流程。具体实现如图所示,应用于如用户界面操作,开始游戏、赠送金币等功能。


图片


实时交易


王者荣耀的实时交易场景中,存在抽奖、购买等用户行为。那么,业务侧需要在用户发起操作后,对用户账户进行扣费操作,并在扣费完成后开始发货。详细的业务流程图,如下所示:


图片


由于涉及到货币交易,在该业务流程中,需要保证以下几点:


  1. 扣费消息绝对不能丢失;

  2. 业务环节较长,需要支持重试操作;

  3. 需要支持延时消息,来延迟查询发货状态,减少服务端资源开销。


TDMQ Pulsar 版可以完美解决上述的需求。


  • 首先,消息存储默认为 3 副本,并通过 Quorum 机制,高效保证多副本之间的一致性;

  • 其次,通过重试队列和死信队列,支持业务客户端自定义消息投递的重试和死信队列,如重试多次后仍不能成功,则进入死信队列人工处理;

  • 最后,支持定时/延时消息,服务端来延时推送消息到下游消费者,无需客户端额外逻辑处理,简化业务实现。


图片

用户评价


TDMQ Plusar 版支持按 Tag 订阅消息,在不同消费者消费同一 Topic 时通过指定不同的 Tag 减少了业务侧过滤消息的压力,提升了业务模块单机吞吐量减少了机器成本。TDMQ 支持按照命名空间维度配置消息生产、消费速率,方便业务进行全局的流量控制,避免引入分布式限流组件,减少了业务的复杂度。


随着业务使用量的增加,单集群生产/消费速率已突破40w/s,得益于 TDMQ 存算分离的架构,在扩容期间能够做到业务侧无感,同时生产消费耗时没有明显增长。配合便捷的监控告警配置,使得业务能够近乎实时的感知集群的生产消费状态异常,及时作出反应。


往期

推荐


腾讯云 TDMQ for Apache Pulsar 多地区高可用容灾实践

可观测新能力:TDMQ Pulsar 支持接入 Prometheus 监控

《Pulsar 产品新形态:弹性存储能力全新上线!

《云原生消息流系统 Apache RocketMQ 在腾讯云的大规模生产实践》

《云原生 API 网关链路追踪能力重磅上线

Kafka 分级存储在腾讯云的实践与演进

Apache RocketMQ 5.0 腾讯云落地实践

RocketMQ 5.X PopAck 源码拆解


图片


扫描下方二维码关注本公众号,

了解更多微服务、消息队列的相关信息!

解锁超多鹅厂周边!

图片
图片
戳原文,查看更多 TDMQ Pulsar 版的信息!


图片

点个在看你最好看


继续滑动看下一个
腾讯云中间件
向上滑动看下一个