莉莉丝游戏云原生之路

简介: 本文将介绍莉莉丝游戏云原生化的背景、挑战,以及应对的解决方案,记录了莉莉丝游戏云原生化历程,为游戏架构云原生转型提供经验。

【阅读原文】戳:莉莉丝游戏云原生之路

作者:beastpu(莉莉丝)/ 刘秋阳(阿里云)

 

 

前言

 

 

《剑与远征:启程》[1]于8月8日开启全平台公测,当下热度持续占据各类新游榜单首位。《启程》倾注了开发者团队多年心血,也是莉莉丝游戏首次尝试将放置卡牌的玩法与世界地图结合。

 

 

 

不仅如此,《启程》也是莉莉丝游戏采用云原生架构的核心项目,也标志着莉莉丝游戏步入全面云原生化的重要阶段。本文将介绍莉莉丝游戏云原生化的背景、挑战,以及应对的解决方案,记录了莉莉丝游戏云原生化历程,为游戏架构云原生转型提供经验。

 

 

 

云原生化背景与初衷

 

 

成本和效率在这些年来逐渐成为了游戏基础设施领域热烈讨论的话题。传统机器运维模式在业务规模化部署的情况下将带来巨大的人力与资源的成本投入,已然不符合当下游戏精细化运营的时代趋势。

 

 

面对传统游戏Infra时代留下的问题,云原生化成为了莉莉丝游戏不二选择。

 

Kubernetes作为云原生时代的实施标准,其强大的编排管理的能力,解耦资源与业务,大幅度降低运维人力成本;声明式的运维方式,可实现符合业务预期的重启与自愈,提升系统的稳定性;弹性可扩展特性使资源可以根据需求动态分配,有效地降低闲时的资源浪费。此外,容器的业务承载形态实现了研发环境与测试环境的有机统一,加速了游戏研发迭代的过程,并且在测试阶段就能尽早发现问题,加强了游戏线上的健壮性。

 

 

 

云原生转型面临挑战

 

 

尽管云原生转型具有多种优势和重要性,但转型之路并非一帆风顺。游戏服务由于其特殊的性质,在落地Kubernetes时存在着一系列的挑战。

 

游戏服优雅更新

 

由于游戏服是有状态服务,内存中缓存了玩家的数据信息,如何优雅地管理游戏服务生命周期是重要难题。Kubernetes的Pod是针对基础设施的状态抽象,无法体现业务状态,因此非常需要一种方式能够透出业务状态,且基于业务状态进行发布或迁移,实现游戏服的优雅更新。

 

 

游戏服资源热加载困难

 

游戏通常使用热更新作为资源更新的主要方式,以避免停服对玩家体验造成负面影响。然而在容器环境下,资源的更新是比较大的挑战。尽管存在着多种方式可以实现资源热更,但实际使用上存在着各种问题,并不优雅。比如,基于持久化存储的方式无法进行云原生条件下的版本管理,出现问题难以定位和回滚;且无法动态感知更新状态,无法确定更新是否成功。

 

游戏服容器IP/名称变化

 

游戏服的通信机制往往基于服务IP或者名称。然而,在原生的Kubernetes下,Deployment在pod重启时会更改其名称与IP,这与传统研运模式有着较大的出入。而StatefulSet负载类型无法对游戏服进行定向管理,如删除或更新指定的ID游戏服。这种现状让游戏服容器化面临进退两难的境地。

 

 

 

Kruise助力游戏服容器化平滑落地

 

 

《剑与远征:启程》于2021年决心采用云原生架构,在当时的游戏行业,游戏与云原生的结合方式并不成熟,虽然一些头部厂商已经实现游戏服容器化部署,但其运维方式更偏向传统虚拟机,未能充分利用编排/调度/自愈等云原生的先天优势,核心问题是源于Kubernetes并未提供一个符合游戏业务的工作负载。

 

面对上述挑战,项目组积极探索更合适、更优雅的解决方案,并最终看到来自社区的开源项目OpenKruise. Kruise以原地升级能力吸引着广大云原生社区的开发者们,莉莉丝发觉该能力与游戏服这种有状态类型的业务非常契合,决定将其引入到《剑与远征:启程》项目中,替代了Deployment、StatefulSet原生Kubernetes工作负载。

 

基于Kruise的原地更新能力,莉莉丝将游戏服拆分出sidecar容器来存储热更新资源,并通过新镜像替换的方式实现资源热更新。在这个过程中,Kruise保证了Pod生命周期不受影响,针对性更新sidecar容器,不影响主容器正常运行,进而保证资源更新的过程玩家不受影响。

 

 

不仅如此,面对Pod无法展现业务状态的弊端,莉莉丝游戏基于Kruise工作负载,在此之上开发了游戏专用的Operator,识别游戏服状态,并根据游戏业务状态在保证玩家体验的同时实现了游戏服的优雅更新。

经过不懈努力,莉莉丝游戏云原生化效果显著:

 

资源利用率提高。硬件资源利用率提高了40%-60%;


 

发布周期缩短,应用发布时间从几小时缩短到分钟级;

 

运维管理成本降低40%以上。

 

 

 

共建云原生游戏社区

 

 

从2022年开始,莉莉丝与OpenKruise社区展开深度合作,共同探讨游戏云原生化的未来发展。《剑与远征:启程》基于Kruise开发的Operator给予了社区启发 —— 具备游戏语意的Kubernetes工作负载将会降低游戏用云成本,帮助游戏开发者更好地利用云原生各方的优势。因此OpenKruise社区联合莉莉丝共同孵化了OKG(OpenKruiseGame)[2],致力于打造游戏云原生化理想路径,推动游戏行业降本增效、高效用云。

 

OKG具有更加通用的游戏使用场景,提供更广泛的游戏语意抽象;不仅支持类似《剑与远征:启程》RPG类型游戏,也支持会话类单局短生命周期等全品类游戏类型;推出Cloud Provider模型,当前已支持AlibabaCloud / AWS / Volcengine,便于开发者在多种不同的云环境下实现游戏的一致性交付。莉莉丝游戏《众神派对》[3]即采用OpenKruiseGame,实现了线上游戏快速发布。

 

 

当前OpenKruiseGame已经帮助多家游戏公司实现云原生化转型。莉莉丝赋予OpenKruise社区以游戏属性,作为游戏云原生的先行者为游戏行业提供了宝贵经验,不仅与社区共同孵化了OpenKruiseGame,并且积极贡献了Faketime项目,帮助游戏服容器实现时间更改,以面对奖励发放、活动计时等游戏测试场景。在未来,莉莉丝游戏也将更多参与云原生游戏社区,为推动游戏行业发展做出更多贡献。

 

 

[1] https://afkjourney.lilith.com/

 

[2] https://openkruise.io/zh/kruisegame/introduction

 

[3] https://zspd.lilith.com/


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
《永恒岛》引入云原生数据库PolarDB实现游戏全球部署和更流畅的游戏体验
三九互娱通过采用阿里云PolarDB作为核心数据库,备份和恢复效率提高10倍以上
129 1
|
8月前
|
运维 Kubernetes Cloud Native
冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级
冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级
|
运维 自然语言处理 监控
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
382 0
|
弹性计算 监控 容灾
《阿里云云原生 Serverless 案例集》——典型案例——游戏-小迈科技
《阿里云云原生 Serverless 案例集》——典型案例——游戏-小迈科技
350 0
|
弹性计算 Cloud Native Java
《阿里云云原生 Serverless 案例集》——典型案例——游戏-江娱互动
《阿里云云原生 Serverless 案例集》——典型案例——游戏-江娱互动
353 0
|
消息中间件 移动开发 运维
《2023云原生实战案例集》——04 互联网——小七手游 MQTT构筑运营平台与游戏端的交互通道
《2023云原生实战案例集》——04 互联网——小七手游 MQTT构筑运营平台与游戏端的交互通道
|
运维 Cloud Native 容器
【已结束】直播预告|传统 PvE 游戏 ∕ 开房间 PvP 游戏的云原生架构升级
【已结束】直播预告|传统 PvE 游戏 ∕ 开房间 PvP 游戏的云原生架构升级
|
运维 Cloud Native 容器
【直播】直播预告 | 云原生游戏第4讲:游戏服的网络接入和状态管理【直播已生成回放】
2022 年 11 月 29 日(周二)阿里云容器服务高级工程师 & 云原生游戏负责人,刘秋阳将会为大家详细介绍 OKG 的网络插件功能,一键式部署游戏服南北向网络,OKG 的自定义服务质量功能,以及自动化地感知并管理游戏服状态。
【直播】直播预告 | 云原生游戏第4讲:游戏服的网络接入和状态管理【直播已生成回放】
|
Kubernetes Cloud Native 5G
云原生游戏第1讲:游戏玩家服容器化的困境与解法
Kubernetes 作为容器编排领域的事实标准,正在被越来越多的企业所熟知和使用,由于游戏服本身所具备的特殊性,如何使其在 Kubernetes 落地成为一直以来的难题,游戏服在 Kubernetes 落地的痛点到底怎么破?本场直播将为大家带来解法!
云原生游戏第1讲:游戏玩家服容器化的困境与解法
|
存储 Cloud Native 安全
阿里云新品发布会周刊第138期 丨 微服务和云原生网关重磅升级+游戏行业最佳实践
新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多新品发布会!
446 0
阿里云新品发布会周刊第138期 丨  微服务和云原生网关重磅升级+游戏行业最佳实践