海量消息下王者荣耀在 TDMQ Pulsar 的实践
关于王者荣耀
《王者荣耀》是由腾讯游戏开发的一款运营在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 消息标签过滤,方便王者荣耀的业务端简化业务逻辑处理流程。具体实现如图所示,应用于如用户界面操作,开始游戏、赠送金币等功能。
实时交易
王者荣耀的实时交易场景中,存在抽奖、购买等用户行为。那么,业务侧需要在用户发起操作后,对用户账户进行扣费操作,并在扣费完成后开始发货。详细的业务流程图,如下所示:
由于涉及到货币交易,在该业务流程中,需要保证以下几点:
-
扣费消息绝对不能丢失;
-
业务环节较长,需要支持重试操作;
-
需要支持延时消息,来延迟查询发货状态,减少服务端资源开销。
TDMQ Pulsar 版可以完美解决上述的需求。
● 首先,消息存储默认为 3 副本,并通过 Quorum 机制,高效保证多副本之间的一致性;
● 其次,通过重试队列和死信队列,支持业务客户端自定义消息投递的重试和死信队列,如重试多次后仍不能成功,则进入死信队列人工处理;
● 最后,支持定时/延时消息,服务端来延时推送消息到下游消费者,无需客户端额外逻辑处理,简化业务实现。
用户评价
TDMQ Plusar 版支持按 Tag 订阅消息,在不同消费者消费同一 Topic 时通过指定不同的 Tag减少了业务侧过滤消息的压力,提升了业务模块单机吞吐量减少了机器成本。TDMQ 支持按照命名空间维度配置消息生产、消费速率,方便业务进行全局的流量控制,避免引入分布式限流组件,减少了业务的复杂度。
随着业务使用量的增加,单集群生产/消费速率已突破40w/s,得益于 TDMQ 存算分离的架构,在扩容期间能够做到业务侧无感,同时生产消费耗时没有明显增长。配合便捷的监控告警配置,使得业务能够近乎实时的感知集群的生产消费状态异常,及时作出反应。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ToDesk 免费版新增连接次数和时长限制
远程桌面软件 ToDesk 近日对免费版用户新增了每月连接次数和时长的限制。 根据ToDesk官博发布的消息,免费版用户每用户每月最多可以发起300次连接,且每月连接时长最多为120个小时。这意味着,个人版每个月使用的会话数和时长超出后将无法继续使用。 官方提供的受限解决办法为:等待次月1号零点刷新配额,或者升级到专业版、游戏版或性能版,以享受不限时效的远程服务。 值得注意的是,ToDesk似乎并未在官网或其他渠道提前发布关于免费版功能限制的通知,导致许多用户在无法连接时才得知这一变化。目前,用户还无法查看自己当月已经发起的连接次数和剩余的连接时长,因为ToDesk尚未上线这类功能。 对于ToDesk的这一做法,不少用户在贴吧等社区表达了不满,认为至少应该提前通知用户,以便有所准备,有用户指出,如果存在紧急远程控制需求,现在只能选择开通会员服务。
- 下一篇
WSL 最新进展:即将推出 WSL 设置应用
Windows 开发者平台高级产品经理Craig Loewen 发博,介绍了 WSL 的一些最新进展。 内存、存储和网络改进 去年 9 月份宣布的几项实验性 WSL 功能已开始进入稳定/默认设置。最新的 WSL 预发布版本包含对 WSL 基本功能的改进,包括: 自动将 WSL 中存储的内存释放回 Windows 默认autoMemoryReclaim=dropCache 解决 GH#8725等问题 提高联网能力 Windows 11 计算机上的默认设置dnsTunneling=true 解决 GH#5068GH#5336等问题 实验性功能包括:wsl--manage<distro>--set-sparse<true/false> - 启用自动磁盘空间回收。- wslconfig 设置networkingMode=mirrored支持尝试新的镜像联网模式,增加了 IPv6 支持等新功能。 WSL Settings GUI 应用程序即将推出 以帮助用户定制、管理和查看 WSL 中的可用设置。 目前,用户需要手动编辑.wslconfig文本文件来调整和配置设置。“不过...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7