莉莉丝游戏云原生之路

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

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

作者: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/


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

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

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
运维 Kubernetes Cloud Native
分钟级到秒级:Yahaha 基于 OpenKruiseGame 的 UE5 游戏云原生实践
回顾《STRIDEN》项目在短短两个月内完成云原生转型的历程,它验证了一条清晰、可行的路径,即如何利用云原生技术,从根本上解决现代在线游戏所面临的运维复杂性难题。
|
4月前
|
资源调度 Kubernetes 调度
网易游戏 Flink 云原生实践
本文分享了网易游戏在Flink实时计算领域的资源管理与架构演进经验,从Yarn到K8s云原生,再到混合云的实践历程。文章详细解析了各阶段的技术挑战与解决方案,包括资源隔离、弹性伸缩、自动扩缩容及服务混部等关键能力的实现。通过混合云架构,网易游戏显著提升了资源利用率,降低了30%机器成本,小作业计算成本下降40%,并为未来性能优化、流批一体及智能运维奠定了基础。
223 9
网易游戏 Flink 云原生实践
|
Cloud Native 关系型数据库 分布式数据库
《永恒岛》引入云原生数据库PolarDB实现游戏全球部署和更流畅的游戏体验
三九互娱通过采用阿里云PolarDB作为核心数据库,备份和恢复效率提高10倍以上
240 1
|
运维 Kubernetes Cloud Native
冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级
冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级
|
运维 自然语言处理 监控
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
516 0
|
弹性计算 监控 容灾
《阿里云云原生 Serverless 案例集》——典型案例——游戏-小迈科技
《阿里云云原生 Serverless 案例集》——典型案例——游戏-小迈科技
413 0
|
弹性计算 Cloud Native Java
《阿里云云原生 Serverless 案例集》——典型案例——游戏-江娱互动
《阿里云云原生 Serverless 案例集》——典型案例——游戏-江娱互动
417 0
|
消息中间件 移动开发 运维
《2023云原生实战案例集》——04 互联网——小七手游 MQTT构筑运营平台与游戏端的交互通道
《2023云原生实战案例集》——04 互联网——小七手游 MQTT构筑运营平台与游戏端的交互通道
|
运维 Cloud Native 容器
【直播】直播预告 | 云原生游戏第4讲:游戏服的网络接入和状态管理【直播已生成回放】
2022 年 11 月 29 日(周二)阿里云容器服务高级工程师 & 云原生游戏负责人,刘秋阳将会为大家详细介绍 OKG 的网络插件功能,一键式部署游戏服南北向网络,OKG 的自定义服务质量功能,以及自动化地感知并管理游戏服状态。
【直播】直播预告 | 云原生游戏第4讲:游戏服的网络接入和状态管理【直播已生成回放】

热门文章

最新文章