首页 文章详情

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

腾讯云中间件 | 121 2024-06-02 12:35 0 0 0
UniSMS (合一短信)
f39480cb64db889e319c2c6de1ecf4ba.webp


da216607aa4cca64e9f831f26e82b322.webp

关于王者荣耀


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

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


da216607aa4cca64e9f831f26e82b322.webp

消息队列选型


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


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


da216607aa4cca64e9f831f26e82b322.webp

TDMQ Pulsar 版产品介绍


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


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


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


272650045c00dc231e885f135734811b.webp


da216607aa4cca64e9f831f26e82b322.webp

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


弹性能力


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


8f66295024dc34b072d4b94d74433bfa.webp


发布订阅


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


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


fb92df6ad45fc87e029b48e4771a330b.webp


实时交易


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


8e14f467187c9531974590d190fcc19f.webp


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


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

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

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


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


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

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

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


da216607aa4cca64e9f831f26e82b322.webp

用户评价


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 源码拆解


810694baafdd663c4326c5e666aedbc8.webp


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

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

解锁超多鹅厂周边!

f18981aabd2708f7232778ba5d005dbe.webp a3ea0f82e428eb51062217e9a9ab667e.webp戳原文,查看更多 TDMQ Pulsar 版的信息!


971dae5005338583115e5c24b05361e3.webp

点个在看你最好看


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter