墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB
分享嘉宾:张铭腾讯数据库专家工程师,TcaplusDB 产品负责人
整理:墨天轮社区
导读
大家好,我是腾讯TcaplusDB的产品负责人张铭,TcaplusDB 是专为游戏设计的分布式 NoSQL 数据存储服务,目前广泛应用于王者荣耀、QQ 飞车、火影忍者等数百款流行游戏。今天我的分享将分为四个方面:TcaplusDB 整体介绍、TcaplusDB 高性能与无损、TcaplusDB 在游戏中的特色能力以及 TcaplusDB 的交付与服务。
TcaplusDB 整体介绍
游戏数据库(TencentDB for TcaplusDB,TcaplusDB)是专为游戏设计的分布式 NoSQL 数据存储服务,历经十年打磨并完全自研。
Tcaplus 在腾讯游戏中有非常广泛的应用,比如大家所熟知的像王者荣耀,和平精英等等。当然除了游戏行业之外,在税务、区块链等政务类的场景也有一些优秀案例的落地。
TcaplusDB 数据库能够满足在游戏的业务中 OLTP 全场景的数据存储要求。
如果您作为一个游戏或者互联网业务的开发者,不管是从接入层还是核心的模块,都可以将 TcaplusDB 作为一款主数据库使用。不管是在游戏中进行战斗,账号匹配结算、游戏系统,运营系统等场景应用,Tcaplus 都能够满足对应的需求。
图 1 TcaplusDB 满足 OLTP 全场景的数据存储要求
1、TcaplusDB 的典型表结构及应用场景
TcaplusDB 的结构整体上分为三个层级,第一个层级为集群,一般来讲是 APP 名或者游戏名;第二个层级是表格组,一般适用于分区,用于区分各种各样的区和组;第三个层级是业务表格,比如说游戏的背包表,用户表等等。
同时我们是一个多 key 多 Value 的数据库,支持若干个主键字段和若干个普通的 Value 字段。不仅如此,我们还做了一些增强,即在 Value 的基础上进行了扩展。
比如一个玩家有很多的背包,每个背包里有若干个道具,这是一个天然的嵌套结构,再用用户的表加若干嵌套字段来实现多层级嵌套的方式。这样我们便能极大地控制好读写放大的一个问题,使得我们运营效率能够最高最大化。
图 2 TcaplusDB 的典型表结构
支持 protobuf 对数据库表定义与访问
在数据库的定表与访问上面,可以使用 Protobuf(Protocol Buffers,PB)表。Protocol Buffers 是 Google 开源的中立、与平台无关的、可扩展的数据描述语言,用于对结构化数据进行序列化,但更小、更快、更简单。
图 3 Protobuf 进行定义与访问
支持 SQL 访问
为了兼容行业内大家的使用习惯,我们在原有这个 PB 的基础之上,推出了 MySQL 的兼容,也就是说您可以通过下载 MySQL 本身的驱动程序,通过客户端来访问数据库。
比如您可以用 select 或者 delete 的语句,通过 sql driver 来连接,这里对多语言的支持做得非常好,基本上多语言都能够连接数据库。
图 4 支持 SQL 访问
像 SQL 一样灵活定义索引
本地索引是在键值数据库中,用到的最多的查询方式是点查,您提供若干个主键字段或者是部分的主键字段,就可以去查询到单条或多条的记录这样一种方式,这个效率非常的高。
那第二种方式索引,可能他的能力功能和能力会非常强,称之为分布式索引或者叫做二级索引。它能够基于这个主键字段之外,指定任意的字段进行模糊匹配的查找,建设相关的索引,包括像条件查询,范围查询,模糊查询,聚合查询等等,都可以用到我们的分布式索引,比如查询好友的昵称等等。
2、TcaplusDB 的整体架构
Tcaplus 整体上是一个以主备模式为主的数据库,分成两个数据的流向,第一个是数据流,即下图中的黄色线。第二条灰色线走的控制流,比如类似于扩容,缩容,建表删表等直接操作。
图 5 TcaplusDB 整体架构
TcaplusDB:高性能与无损
1、无需分库分表,管理粒度细化到表
TcaplusDB 是一款完全分布式的数据库,分布式的能力非常强。同时索引不同于大家常见的顺序索引等。我们的核心是一款哈希的索引。
基于这种哈希索引下,索引 本身底层技术架构决定了它在面对海量的读写的时候,效率会非常非常高。同时,我们把这种相对复杂的需要顺序索引所执行的一些操作,放到了我们的分布式索引这一块儿但是在主要的点查这块儿是基于哈希索引去做的。
同时我们的管理能够细化到表,也就是扩容和缩容,包括故障处理的一些级别,都是代表级的,这样的力度能够给运维成本带来优势。目前单表最多能够支持 2.56PB,未来也会扩大它的容量,同时一个存储金仓可以管理多个 shard,一个表可以分布在多个存储进程中。
图 6 TcaplusDB 管理粒度细化到表
2、成本仅为关系型 DB 的 30%
基于内存加这个最终的 SSD 落地的结构,包括前面提到这种哈希引擎,可以让我们的整个在这种高性能读写的方面,也就是点查这种典型的场景之下,做到成本仅为关系型数据库的 30%。
图 7 TcaplusDB 的存储引擎结构
3、海量读写与稳定延时
同时 TcaplusDB 具备海量读写与稳定延时的功能。1 小时扩 100W QPS,应对快速变化的运营需求,同时支持读写分离,秒杀、红包、全球同服、实时对战等超高性能场景。
TcaplusDB 在游戏中的特色能力
1、业务不停服
在 APP 或者游戏中,可能面临一个很大的问题,首先数据的表结构可能会升级,其次随着数据库本身的版本演进,数据库自身也会有变更,比如 bug 修复或者故障管理。
那在这样两种核心的场景下,不管您是做哪种变更,我们都能对您的这个业务实现无感化,让你的业务不需要停服,这是目前市面上很多数据库不具备的能力。
图 8 TcaplusDB 实现业务不停服
2、海量并发下的大数据存储场景
非常多的用户在做选型时,他们的场景下单条记录非常大,需要在现网做频繁的变更,并且变更的量也非常大,因此没有办法使用类似的对象存储,而 TcaplusDB 可以支持海量并发下的大数据存储,比如在游戏中,捏脸的数据非常细并且做了很多的细腻展出,这样会造成它的单条记录数据非常大,这时我们可以将它这样一套记录存储下来,再提供对外提供一个服务。
图 9 TcaplusDB 在海量大并发场景下实现大数据存储
3、排行榜场景中的核心能力与优势
TcaplusDB 具有记录玩家分数并实时更新与查询的核心能力,同时在差异化优势上,TcaplusDB 表现在解决数据维护一致性问题,并对多个字段设定排序规则,解决 Redis 用户需要自行解决相同分数的方案。
图 10 TcaplusDB 在排行榜场景的核心能力与优势
TcaplusDB 的交付与服务
1、一套 DB,全球发行
TcaplusDB 在整个的部署发行这里,能够为客户提供多种不同形式。
TcaplusDB 云服务:包括我们提供以云服务的形式,在腾讯云上有我们的这个云服务
TcaplusDB 商业版:提供私有化部署的商业版。
TcaplusDB 社区版:同时社区版目前也正在做,完全在您的这个 IDC 和 CL 的机房中去部署我们这一款数据库的产品。
图 11 TcaplusDB 的不同发行版
为了方便这个开发者开发的话,我们也提供这个单机的版本,不管您是单机的 Windows Linux,你可能需要一个四核 8G 左右的一个机器,就可以把我们的这个这个数据库从单机版部署起来,这样您可以在本地的这个云,或者是本地的这个 IDC 环境进行相应的一个开发调试的动作。
2、云模式下,灵活计费方案
在计费方式上分为两种,一种是标准集群,按量付费、高性价比;一种是按资源付费付费,稳定高性能。
图 12 TcaplusDB 的不同计费方式
3、运营 62 个可用区,助力游戏全球化部署
依托于腾讯本身在全球的一个运营发行,我们支持到全球 62 个可能区,能够助力到大家的在全球化的发行和运营方面的一些需求。整体来说,我们这款数据库,它是一款键值数据库,我们在整个在游戏相关的领域上也做了非常多的深耕和细化,包括在高性能和低成本,再到游戏产品里都有体现。
最后大家如果想进一步的交流或者了解的话,可以扫下方图中的二维码,添加工作人员的微信,希望大家提供进一步的服务。
图 13 TcaplusDB 更懂游戏的数据库
更多精彩内容,欢迎大家观看现场视频回放与会议资料
查看【国产数据库沙龙】键值数据库专场文章、视频回放资源:https://www.modb.pro/topic/379708
了解更多可以进入👉墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
版权声明: 本文为 InfoQ 作者【墨天轮】的原创文章。
原文链接:【http://xie.infoq.cn/article/897309770298b8952585cebb2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论