TcaplusDB|数据库领域又一里程碑式突破!腾讯云TcaplusDB支持过亿DAU游戏

11月1日晚 , 《王者荣耀》官方宣布2020年日活跃用户数日均1亿 , 成为国内乃至全球首个日均DAU过亿的手游 。 与此同时 , 腾讯云TcaplusDB作为《王者荣耀》的数据库服务产品 , 成为全球首款支持过亿DAU游戏的数据库 。
任何一款游戏的成功都不是偶然的 , 《王者荣耀》在保证游戏的挑战性、趣味性和多样性上做了很多功夫 , 仅系统就有几十个 , 包括战斗系统、玩家系统、铭文等 。 目前 , 《王者荣耀》的后台数据量已高达数百TB , 1个区有100多个表且还在不断增加 。 这就致使了《王者荣耀》对数据库性能、稳定性、扩缩容、成本、游戏特有场景等方面有着更高要求 。
对于《王者荣耀》而言 , 数据库是灵魂 , 承载着所有系统的信息落地 , 而专为游戏而生的腾讯云自研分布式NoSQL数据库TcaplusDB , 5年来一直为《王者荣耀》的核心数据提供数据库服务 。 可以说 , 每一次的玩家登陆、每一局的对战、每一轮的录像回放都是对TcaplusDB的考验 , 每一次的团战都需要在海量的数据中进行增删改查 。
“我们对比过很多数据库 , 在目前王者的数据容量和并发条件下 , TcaplusDB的读写时延是最稳定的!”《王者荣耀》相关技术负责人评价道 。 在他看来 , TcaplusDB高并发、低时延、低成本的性能优势为《王者荣耀》的数据运行和游戏业务场景提供了强劲支撑 。
具体来说 , TcaplusDB拥有接近无限的水平扩展能力 。 基于shard分片的分布式技术 , 其单表容量可以支持2.56 PB , 吞吐能力随硬件扩充呈线性增长 。 同时 , 通过快慢请求分离与记录级锁 , 它可以解决复杂请求和简单请求的隔离 , 减少锁定范围提升读写效率 。 此外 , 基于创新算法 , TcaplusDB可以在一个进程中实现冷热数据的交换 , 解决跨进程数据交换的一致性、可用性与管理复杂等问题 。
从游戏业务场景的角度出发 , TcaplusDB支持表级和记录级的数据生命周期管理 , 能够有效实现活动数据的过期清理 。 此外 , 基于冷备数据和二进制日志数据 , TcaplusDB还可以针对全服级、表级、记录级或按照指定条件进行回档 , 且时间精确到毫秒 。
另一方面 , 面对海量增长的用户数 , 系统稳定和扩容一直是《王者荣耀》的关注焦点 。
不管是每年的“开黑节”、春节期间的DAU上涨还是5周年庆的计划性扩容 , TcaplusDB都能在应对频繁扩容需求的同时确保着5个9的高可用性 。
2020年春节 , TcaplusDB陆续对各个大区7个表进行了15次扩容 , 扩容集群服务只增加了20组 。 最后一次扩容 , 在1小时内完成了突增100万-200万 PCU扩容 , 且在扩容过程中玩家无感知 。
这是个几乎不可能完成的任务 , 但TcaplusDB交上了满分答卷 。 它是怎么做到的?
首先是理解应用的自动负载均衡和过载保护 。 以过载保护为例 , TcaplusDB能站在“游戏服务器”的视角感知业务过载 , 通过处理时延、队列长度、成功率等指标综合评估数据库的负载能力 , 对高负载应用进行保护 , 防止雪崩发生 。
同时 , TcaplusDB针对计划内扩容和计划外扩容 , 提出了不同的解决方案 , 根据实际情况随机应变 , 灵活处理 , 并通过对可用区故障的自动切换与修复 , 在技术上支持跨可用区和单设备的故障自动切换和修复 , 既保障了扩容的速度和效率 , 又做到对玩家的完全无感 。
值得一提的是 , 这不是首次面对这样的挑战 。 早在2017年春节期间 , TcaplusDB就经历了连续七天的深夜扩容 , 在系统能力不足的情况下 , 通过开启读分流规避方案 , 成功度过高峰期 。 S赛季期间 , 由于玩家想看的赛季场数超过最初设计的10场 , TcaplusDB是进行了大规模改表结构 , 紧急支持表结构修改对用户无感方案 。
历经腾讯内部8年的游戏经验积累 , TcaplusDB数据库已广泛应用于《王者荣耀》、《刺激战场》、《穿越火线》、《火影忍者》等数百款流行游戏 , 并通过腾讯云向全球游戏业务提供服务 。


推荐阅读