《生死狙击》研发商无端科技使用 RDS 倚天 ARM 架构数据库,实现增效降本
案例速览
行业:互联网游戏
挑战:在游戏场景下,安全、稳定和高性能是选择数据库的重要考量,以支持游戏平台和游戏开发者提供优质的游戏体验和用户服务。在满足稳定和性能的前提下,需技术手段降本增效帮助节约 IT 成本,并实现业务的无感切换和平滑迁移。
解决方案与产品:RDS 倚天 ARM 架构数据库
成果:
降本增效,基于 RDS ARM 架构的数据库成本大幅下降,并保证性能和稳定性相当,达到客户降本增效的诉求;
业务平滑迁移,在应用 0 改造的基础上,实现业务无感平滑迁移,帮助客户实现迁移和优化改造;
高并发访问,RDS 倚天 ARM 架构帮助客户稳定度过多次大型活动,稳定性和性能表现优异。
背景
无端科技成立于 2010 年,是国内一流的休闲竞技游戏研发商(是国内领先的集研发与运营为一体的射击游戏厂商)。公司先后在网页、手机、客户端平台自研和发行 10 余款游戏产品,其中射击页游《生死狙击》全球累用户超 5 亿,月活跃用户达 3000 万,首款自研次世代畅爽射击端游《生死狙击 2》于 2022 年上线。
业务挑战
无端作为国内一流的游戏研发商,在游戏研发过程中,不光要考虑到游戏研发的效果,还要兼顾游戏投入成本,在保证游戏稳定搞下运行的前提下,依赖技术手段降低整体的成本是一直在探索的方向,其中游戏场景主要包括了游戏服和大厅服,游戏服承载了核心的游戏业务逻辑,大厅服作为登录,支付,商店等的核心应用承载场景,对稳定性和性能的要求很高,尤其是在一些游戏活动和赛季中,会有瞬时的高并发流量,对游戏的整体架构和性能负载都有很大的挑战,其中游戏架构中核心内容如下:
服务器场景:物理服务器架构通常用于大型多人在线游戏,它通过将游戏服务器置于物理服务器上,提供高可用性和高性能的游戏体验。这种架构需要大量的硬件、软件和网络资源来支持。
分布式场景:分布式架构采用多个节点来实现游戏的分布式处理。这种架构可以提高游戏的性能和可扩展性,同时也能够提供更好的容错性,防止游戏崩溃。
数据库场景:游戏场景中的数据库一般采用关系型数据库和非关系型数据库的混合使用。关系型数据库可以提供事务的支持,而非关系型数据库可以提供高可用性和高读写性能的支持。
客户端场景:随着移动设备的普及,移动端和 PC 端技术也成为了游戏场景下的一个重要技术。移动端技术主要包括移动应用开发、移动游戏开发、移动网页开发等方面的技术。
基于以上的游戏场景,游戏架构下主要有以下需求:
高并发:游戏场景下的互联网技术架构需要支持大量用户同时访问和使用游戏服务,因此架构需要具备高并发处理能力,同时保证游戏服务的稳定性和可用性。
实时性:大多数游戏都需要实时处理和响应玩家的操作,因此游戏场景下的互联网技术架构需要具备快速的实时处理能力,可以保证玩家在游戏过程中获得流畅的体验。
安全性:游戏场景下的互联网技术架构需要具备高强度的安全性措施,以保护用户隐私和游戏数据的安全。这包括权限控制、数据加密、防火墙等多种安全技术。
可扩展性:游戏场景下的互联网技术架构需要具备高度的可扩展性,可以支持新增功能和服务,同时支持大规模的用户增长。
灵活性:游戏场景下的互联网技术架构需要具备灵活性,可以快速适应不同类型的游戏需求和用户需求。架构需要支持快速迭代和定制化开发,以满足不同游戏的需求。
因此,在游戏场景下,安全、稳定和高性能是选择数据库的重要依据,以支持游戏平台和游戏开发者提供优质的游戏体验和用户服务。在满足稳定和性能的前提下,实现技术手段降本增效能帮助客户很好的节约 IT 成本,并且需要实现业务的无感切换和平滑迁移。
产品 & 解决方案
RDS 倚天 ARM 架构
RDS MySQL 的 ARM 架构相对于传统的 X86 架构,在计算性能和能耗效率上具有较大的优势。阿里云 RDS 产研团队投入大量的研发资源,逐步优化 ARM 架构数据库的性能,使其可以更加稳定、高效地运行。随着技术逐步成熟,成本也相应降低,这使得降价成为了一个可行的选择。其次,伴随着信息化转型的改革浪潮以及云计算的蓬勃发展,越来越多的企业开始将数据库迁移到云上,对于高性能、低成本的云数据库诉求也越来越多。阿里云 RDS 倚天 ARM 架构通过技术手段实现降本可以更好地满足市场客户需求,作为企业数据资产的重要载体,数据库的高性价比可以明显地降低企业 TCO。
硬件层面
Prefetch 预取策略优化
倚天 710 上默认的 Prefetch 预取策略不适合数据库的访问场景,RDS 产研团队和平头哥芯片团队一起进行了针对性的调整,从预取算法的选择,预取量的控制,预取过程中对 L2 的使用等方面,选取了一组最适合数据库场景的预取策略。
OS 层面
为了更好适配 ARM 架构,RDS 内核团队和 OS 团队一起,根据 ARM 架构倚天 710 特点在 OS 上进行了深度调优。
调度算法优化
自 Linux 内核版本 2.6.23 以来,CFS(Completely Fair Scheduler)成为默认的 Linux 内核调度程序。CFS 为了保证对每个可运行任务的公平处理,会通过累计 vruntime,保证任务调度的公平。在 ARM 服务上,频繁的线程调度会带来较大的性能开销。基于此,我们针对 OS 的调度策略做了针对性优化,重点对 sched_min_granularity_ns, sched_wakeup_granularity_ns, sched_migration_cost_ns 等参数进行了调整,保证 RDS 在 ARM 服务器下的性能。
开启代码段大页
在传统 X86 服务器上,为了保证 MySQL 的性能稳定,默认关闭了大页。在 ARM 服务器上,新版本的 OS 支持了单独的代码段大页,即只对代码段开启大页,数据段不使用大页,从而降低代码段的 TLB miss 率,提升性能。对于 PostgerSQL 引擎,无论 ARM 还是 X86,默认都开启了代码段大页。
网卡中断优化
通过“网卡中断聚合”的方式,针对 SMP IRQ affinity 和 RPS 做了相关调整,主要减少在处理网络中断时频繁的上下文切换带来的性能损耗,将多个网络队列绑定到一个核上,聚合处理能带来 CPU icache 使用效率提升。大致示意图如下:
编译优化
在 ARM 服务器上,为了提升 OS 的运行效率,RDS 内核团队和 OS 团队一起,在 OS 编译过程中引入了 PGO(Profile Guided Optimization)的方式,针对数据库的典型负载,对 OS 进行针对性的编译优化,保证 OS 在数据库场景下的运行效率。
数据库层面
编译优化
倚天 710 芯片支持了 armv8.6 指令集,数据库在编译过程中进行了相应适配,保证指令高效使用。同时在编译过程中启用了 LTO(Link Time Optimization)和 PGO(Profile Guided Optimization),分别从代码链接优化和运行时 profiling 反馈优化两个方面,提升数据库的性能。此外,在内存管理上,采用的 Jemalloc 替换默认的内存分配机制,保障内存分配与回收的高效。
锁优化
锁冲突是数据库并发场景下最常见的性能瓶颈点,数据库内核层面结合倚天 710 芯片的特点进行了针对性的优化,通过重新设计 spinlock 的实现、优化指令操作等方式,有效降低了并发场景下的锁冲突问题。
Double Write
MySQL 数据库通过 double write 机制来保证数据写的安全性,但是 double write 机制也带来了更大的 IO 压力,特别是在云盘场景下。为此,数据库打通块存储和文件系统,实现了 16K 原子写的能力,在此能力的保障下,率先可以在 ARM 体系下安全地关闭 double write,降级写 IO 的压力,极大提升 IO Bound 场景下的性能。
热点函数优化
数据针对并发访问场景下的典型热点函数进行了针对性优化,对包括:memcpy、crc32、hash_sort 等热点函数进行了指令级的优化,充分发挥倚天 710 芯片的特点,保证数据库的性能。
特色场景优化
倚天 710 芯片在压缩场景下具有明显的性能优势,依托于倚天 710 芯片提供的硬件加速能力,RDS PostgerSQL 在压缩表场景上进行了优化,开启压缩表后,在存储成本显著降低的情况下性能无退化。
倚天 710 为云而设计,体现云原生优势
倚天 710 CPU 是专门为云而生的云原生处理器芯片,主要体现在如下几个方面:
倚天 710 芯片无超线程概念,用户使用 ECS 规格享受的是极致的物理核性能体验,无论用户业务负载压力多大,均不会造成业务性能衰减。在此基础上,芯片设计充分考虑云用户不同规格虚拟机在性能上的可预期性,例如 CPU 缓存 qos 特性等,不同规格的划分均具备可预期的线性性能变化,帮助客户充分应对复杂的业务变化。
倚天 710 芯片与 CIPU 实现了 1+1 大于 2 的效果。倚天 710 将自身算力优势和 CIPU IO 优势结合,使得倚天 ECS 在用户业务场景取得了优异的性能表现。同时,通过以 CIPU 为核心的理念,倚天 ECS 的成本和稳定性均得到了很好优化。通过 CIPU 为核心,我们采用多单路的机型设计方式,在保证低爆炸半径的前提下,提升部署密度,有效降低倚天 ECS 使用成本。
RDS MySQL 为例,经过深度优化性能超过普通自建 MySQL
在经过一系列的软硬件优化以后,我们以一个规格为 8C32G 100G 数据的实例进行 Sysbench 跑分压测,其中 RDS ARM 指 RDS on 倚天深度优化的实例、X86 自建指客户基于 X86 架构的 ECS 实例自建同等规格数据库、ARM 自建指客户基于倚天架构的 ECS 实例自建同等规格数据库,具体性能数据如下:
RDS ARM
RDS MySQL 的 ARM 架构在无端《生死狙击 2》的应用:
开服场景在游戏活动中,开服瞬间有大并发的登录和读写数据库的操作,对数据库的锁冲突挑战非常大,RDS MySQL 结合倚天 710 芯片的特点进行了针对性的优化,通过重新设计 spinlock 的实现、优化指令操作等方式,有效降低了并发场景下的锁冲突问题。
IO 优化游戏场景下,由于涉及到背包和道具属性通常比较大,因此在读写数据库过程中,游戏数据库存储 IO 压力相对较大。RDS ARM 架构打通块存储和文件系统,实现了 16K 原子写的能力,在此能力的保障下,率先可以在 ARM 体系下安全地关闭 double write,降级写 IO 的压力,极大提升 IO Bound 场景下的性能.
备份恢复 RDS 支持 PITR、极速库表恢复等多种备份恢复能力,帮忙游戏业务在异常情况下快速回档。
客户收益
RDS 产研团队经过软硬协同的一系列优化,使得倚天 ARM 架构数据库性能进一步提升并释放技术红利。在稳定性方面,RDS ARM 架构规格承诺与 X86 一致的高 SLA 保障,高可用规格最高 SLA 99.99%。产品功能和使用体验上也与 X86 规格完全一致,应用无适配门槛。在无端科技的《生死狙击 2》游戏场景中,基于 RDS MySQL 的倚天 ARM 架构,在保证稳定和性能的前提下,帮助客户实现降本增效,其中核心业务价值包括:
1. 降本增效
相较于 X86 架构,基于 RDS ARM 架构的数据库成本大幅下降,并且可以保证性能和稳定性相当,达到客户降本增效的诉求;
2. 业务平滑迁移
RDS ARM 产品功能与 X86 架构完全一致,在应用 0 改造的基础上,实现业务的无感平滑迁移,帮助客户实现迁移和优化改造;
3. 高并发访问
在游戏活动和赛季中,通常有瞬间的高并发访问,因此对数据库的性能有极大的挑战,RDS 倚天 ARM 架构帮助客户稳定度过多次大型活动,稳定性和性能表现优异。
客户感言
无端科技数据库负责人许岩表示:“倚天 ARM 架构下的 RDS 数据库,在提供稳定高性能的访问前提下,帮助我们实现了降本增效的目的,很好的满足了我们业务诉求,也支撑了多次大型活动。”
阿里云瑶池数据库开通免费试用啦!
面向国内 1000 万云上开发者,阿里云推出“飞天免费试用计划”。
云数据库 RDS 现推出 3 个月【免费试用】,快来领取吧!
点击链接力即刻开启云上实践之旅!
版权声明: 本文为 InfoQ 作者【阿里云瑶池数据库】的原创文章。
原文链接:【http://xie.infoq.cn/article/37c533a305df8f8f7c7f556d9】。文章转载请联系作者。
评论