网易游戏DB SaaS引入OceanBase:存储成本降60%,备份恢复提速3倍

作者:田维繁,网易游戏 SaaS 服务关系型数据库运维小组负责人

一、网易游戏DB SaaS平台架构

网易游戏作为中国领先的游戏开发公司之一,一直处于网络游戏自主研发领域的前端。其产品及周边业务众多,涵盖《梦幻西游》《大话西游》《蛋仔派对》,以及游戏交易宝藏地”藏宝阁”等一系列热门游戏服务及周边产品线,需要不同的数据处理产品来满足不同的业务场景。

针对这些丰富多样的游戏及周边业务场景,DB SaaS提供了一站式的数据库私有云服务平台,旨在满足所有数据库需求。

如图1所示,DB SaaS的服务主要被分为三层。

图1 网易游戏DB SaaS服务架构

第一层是硬件服务层。主要提供自建IDC机房虚拟化、公有云(包括AWS、阿里云、GCP、微软云)及自建私有云服务,全面覆盖底层基础设施需求。

第二层是数据库层。在硬件服务层之上,构建了强大的数据库服务层。这一层提供了多种类型的数据库服务,包括文档型、内存型、关系型、KV型、向量型以及图数据库,全面满足不同的数据存储与处理需求。

第三层是数据库服务能力层。服务能力层分为三个方面:

  • 一是数据库生命周期管理,主要提供资源管理、数据库架构、数据库实例的完整生命周期服务。
  • 二是数据管理服务(DMS)。提供安全多样化且便捷的数据查询、分析、变更服务。
  • 三是数据迁移服务(DTS)。包括为用户提供数据查询、数据回滚、表索引管理、提供业务合服、拆分迁移等多样化数据流转服务。

针对数据库服务能力层,还打造了一套全面的备份管理系统,主要适用于游戏场景。游戏行业的频繁更迭要求提供高效、灵活的备份方案,因此集成了常规备份、快速备份、增量备份、库表备份以及备份巡检等一系列强大的备份功能。

二、游戏业务场景特点及数据库选型需求

(一)游戏业务特点及MySQL应用痛点

以一个游戏周边的服务为例,业务初期采用单实例主备从的架构模式。随着接入的游戏数量不断增加,这种架构已无法满足日益增长的请求需求,因此对数据库进行了拆分。

图2 某游戏周边服务平台的数据库架构演进

拆分后需要引入汇总实例来处理大规模合并查询。起初由MySQL承担,但随着业务规模不断扩大,遇到了6个主要问题:

  1. 高并发响应问题。 高峰期主库请求量接近十万QPS,所有从库总QPS接近百万,单机MySQL无法承载。
  2. 数据同步延迟问题。 从库读请求延迟要求非常高,从多个源头复制并同步数据叠加查询压力导致延迟。
  3. 单库存储空间压力问题。 单节点存储空间已超过十几TB以上。
  4. 业务隔离问题。 某款游戏活动带来的突发流量会影响其他游戏的正常运行。
  5. DDL变更的痛。 游戏合服和拆服需要大量频繁的DDL变更,游戏初期快速迭代也促使频繁DDL变更。
  6. 运维工作困难。 突发流量下只能通过增加实例缓解压力,大数据量下扩容从库、备份恢复耗费大量时间。

(二)网易游戏为何选择OceanBase?

通过与业务方深入沟通,明确了数据库必备的关键特性。OceanBase非常符合要求:

  1. 高并发下的稳定性。 三副本分布式架构支持自动故障切换,RPO=0,RTO<8s。
  2. 透明的横向扩展能力。 在线平滑扩缩容,扩容后自动负载均衡。
  3. 资源隔离特性。 支持多租户,租户间CPU、内存、IOPS隔离。
  4. 数据同步时效性。 使用OMS迁移工具,数据同步链路几乎无延迟。
  5. HTAP能力。 一套系统、一份数据支撑HTAP场景。
  6. 成本相对较低。 LSM-Tree存储引擎,节约70%-90%存储成本。
  7. MySQL兼容性。 良好的MySQL兼容性,无需修改业务代码。

三、解决方案及测试:多重验证保障业务顺畅运行

(一)测试1:前期基础测试

图3 测试环境

使用Sysbench完成混合读写、只读、只写场景测试。OLTP性能方面,小规模数据量时OceanBase 4.0几乎与MySQL持平,4.1版本优于单机MySQL;大数据量(1亿以上)扩容后性能远超单机MySQL。

图4 压测对比

存储压缩方面,从上游MySQL导出5TB数据到OceanBase,三副本总存储才2.1TB,单副本700GB,数据压缩率接近86%。

(二)测试2:多租户资源隔离专项测试

同时对两个租户进行性能压测,结论:

  • 资源稳定性满足期待,CPU和内存使用稳定。
  • 隔离性满足期待,租户间没有明显影响。

(三)测试3:兼容性与高并发流量验证

引入自研流量回放系统(drcapture + drrecord),进行兼容性验证和并发流量验证。

图5 OceanBase 分阶段实施方案

图6 流量抓取与回放过程

兼容性测试完成,系统兼容性没有任何问题。按五倍、六倍流量规模进行回放,OceanBase依然迅速响应,没有异常。

(四)测试4:可靠性验证

围绕4个故障场景进行演练:

  • 上游机器宕机 → OMS同步延迟在几十秒范围内
  • OMS服务器故障 → 同步延迟约30s~60s
  • OceanBase节点宕机 → 业务抖动控制在10s以下
  • 大表DDL操作 → 跳过DDL变更同步,优先在OceanBase执行

四、OceanBase技术实践问题经验分享

(一)OMS数据同步性能优化

上游写入量较大时同步经常出现延迟,定位到自增序列相关函数的rpc耗时较高。原因是Order模式下每次请求自增序列都产生rpc开销。

解决方案:

  • 方案一:去掉自增列属性
  • 方案二:将Order改为noorder模式,每个OBServer维护自己的属性缓存

图7 OMS 同步性能优化方案

(二)同步中查询读到事务中间态

业务场景中一个事务内包含数百个DML操作,OMS默认按maxRecords=64进行切分,导致查询读到中间状态。解决方案:将参数调整为1024。

图8 解决同步事务问题

(三)合理设计分区表

将512个hash分区降为10+个分区,在满足横向Balance的同时减少RPC延迟。对不走分区键的查询创建全局索引。

(四)设计主键或唯一键

分区表没有主键和唯一键导致同步过程中数据重复,解决方法是对OceanBase的表加上主键或唯一键。

五、降本提效,稳定可靠:OceanBase为网易游戏带来的改变

图9 引入 OceanBase 后的业务架构

引入OceanBase后获得六点收益:

  1. 查询稳定。 与MySQL相比稳定性显著提升,几乎无抖动。
  2. 灵活扩展降低高并发压力。 MySQL只读从库QPS迁移到OceanBase后压力骤降。
  3. 存储成本下降。 与MySQL单副本对比,整体存储成本下降超过80%,归档后压缩30%以上。
  4. 数据实时性得到有效控制。 高峰期延迟最多仅2s,完全满足业务需求。
  5. 备份恢复效率提升。 恢复效率提升至少三倍。
  6. 运维更加简单。 动态调整资源、白屏化SQL限流、Paxos高可用对应用无感。

此外,还决定将OceanBase生态工具能力集成到DB SaaS中,建设OceanBase云平台,提供一站式运维管理能力。

六、总结和展望

网易游戏引入OceanBase以来,系统非常稳定,未出现任何性能抖动和同步延迟问题,有效解决了业务痛点。将OceanBase生态工具纳入DB SaaS平台后,丰富了服务能力。

未来计划逐步减少更多的MySQL从库,并考虑将全部业务迁移到OceanBase。