共计 2072 个字符,预计需要花费 6 分钟才能阅读完成。
昆仑万维是寰球当先、业内前沿的综合性互联网团体,业务涵盖昆仑游戏(GameArk)、信息资讯(Opera)等多个业务板块。其中,昆仑游戏(GameArk)凭借研发及经营的外围劣势,面向寰球进行游戏的研发、发行与经营,造成多样性的产品矩阵。截止 2020 年底,月活用户达到上亿规模。
面临挑战
游戏业务在经营过程中会产生大量数据,比方道具产生耗费、货币产生耗费、玩家等级散布、工作实现状况、各地图玩家散布、玩家战斗数据等等。随着业务深刻倒退和精细化经营的一直加深,市场投放和经营所需的数据维度越来越多,越来越细,开始出现爆发式的增长态势,如何寄存及剖析这些数据成为迫切需要解决的问题。在简单的场景下,昆仑游戏开始应用多种数据库撑持业务,从传统关系型数据库到 NoSQL、NewSQL,以及各类剖析数据的零碎和工具,这为运维与治理层面带来了严厉挑战。
从 MySQL Cluster 到 TiDB 的降级
昆仑游戏从 2008 年拓展业务开始,技术的传承既带来了教训的积攒,也导致了技术债的产生。昆仑游戏的数据分析系统,为业务提供实时的游戏汇总数据,例如金币耗费、道具购买散布等。游戏业务实时将产生的信息依照指定格局发送到指定接口,MySQL 数据库接到汇报过去的数据进行存储。初期在数据量不大的状况下,数据库运行比较稳定。随着业务的疾速倒退,MySQL 单表的数据冲破 5000 万条之后,数据的入库与实时查问都开始变慢,从而无奈适应业务需要。
昆仑游戏在综合考量后决定:在尽量不重构现有业务端代码的根底上,对现有 MySQL 计划进行平滑过渡和降级革新。最开始是优化 SQL 查问语句,查找慢查问的起因。随着单表数据量的增多,昆仑游戏发现 SQL 执行效率的晋升并不显著。如果按工夫对 MySQL 进行分库分表,随之而来的是跨节点查问 Join、跨节点分页、排序、函数等一系列问题,计划过于简单,并且须要改写业务端代码。从实质上来讲,这是以“打补丁”的形式来实现横向扩大。
为了更好地解决单点故障问题,昆仑游戏的数据库状态从最后的 MySQL 单库,MySQL 主从、一主多从,降级到了 MySQL Cluster。MySQL Cluster 是 Oracle 官网提供的企业级数据库计划,采纳了 Shared Nothing 的架构设计,该计划的长处是解决了以前的 MySQL 单点故障,提供主动生效切换,相较来说有更好的可扩展性与更高的解决性能。
但 MySQL Cluster 计划也存在显著毛病:首先是老本昂扬,原有版本的 MySQL Cluster 的数据节点把数据都寄存在内存里,繁多节点的内存通常须要配置到 512GB,甚至更高。能够意料的后果是,当随着海量数据的增长,所需节点也会越来越多,硬件老本的晋升也将很迅速;其次,MySQL Cluster 存在诸多限度,例如不反对外键,数据行不能超过 8K 等;第三,该计划的备份和复原并不不便,复原数据须要 IT 人员到每个数据节点上以敲指令的模式执行,且无奈备份到如 S3 等云端存储;此外,整套零碎的部署、治理、配置绝对比较复杂,无奈与现有基于云的 IT 架构完满匹配。
昆仑游戏心愿采纳云原生 NewSQL 数据库来匹配性能、扩展性以及云端部署与运维等方面的需要。通过对市场上支流的 NewSQL 数据库进行调研与实在业务场景测试比照之后,昆仑游戏决定选用 TiDB 扩大数据架构体系的能力幅员。
TiDB 解决之道
昆仑游戏基于私有云构建起一套反对高并发、高可用、可横向扩大的 TiDB 分布式数据库集群,实现游戏类业务数据的集中管理,同时为报表、监控、经营、用户画像与大数据计算等业务提供数据服务。
通过应用 TiDB Data Migration (DM) 工具,昆仑游戏将多个 MySQL 库的数据同步到 TiDB 集群,并借助 TiDB 的程度扩大能力提供实践上容量无下限的存储能力。 目前,昆仑游戏的 TiDB 集群数据规模已达到几十 TB。将来,昆仑游戏还将会联合本身的业务需要以及 TiDB 的新个性,摸索更多业务场景。
逻辑架构图
为什么抉择 TiDB?
昆仑游戏通过构建 TiDB 数据服务平台,解决了原有数据库系统在性能、扩展性以及云端部署与运维等方面的问题,晋升了面向业务的数据服务能力。 其次要劣势集中体现在以下几方面:
- TiDB 与 MySQL 高度兼容,原有业务代码根本不必改变,实现了业务的平滑切换;
- 在架构与性能方面,TiDB 存储计算拆散的架构设计,突破了单机数据库的容量和性能瓶颈,可
- 以实现性能与容量的弹性伸缩,读写 QPS 与均匀延时齐全满足业务要求;
- 在生态方面,TiDB 具备弱小的生态体系,反对连贯 Spark、Flink、Kafka 等数据利用生态,为业务打造全场景的数字化服务平台;
- 在老本方面,TiDB 反对云端部署与运维,并且可与 S3 无缝对接。将整套数据分析系统搬到云端部署当前,硬件老本降落 50% 以上。
「咱们的指标是把数据服务变得更加麻利:一是通过分布式架构晋升数据库的服务效率,让数据库更好地满足业务的需要;二是让数据库应用层与底层 IT 技术进行解耦,缩小下层利用对底层技术的依赖,升高整体的 IT 建设与运维老本。」——昆仑游戏 IT 运维总监 刘晗