C/C++教程

墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB

本文主要是介绍墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 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/video/6182
会议资料:https://www.modb.pro/doc/58646


  • 查看原文:https://www.modb.pro/db/388139
  • 查看【国产数据库沙龙】键值数据库专场文章、视频回放资源:https://www.modb.pro/topic/379708

了解更多可以进入

这篇关于墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!