张路,运营开发专家工程师,现负责游戏知几 AI 助手后台架构设计和优化工作。
随着业务不断的拓展,游戏知几 AI 智能问答机器人业务已经覆盖了自研游戏、二方、海外的多款游戏。游戏知几研发团队主动拥抱云原生,推动后台业务全量上云,服务累计核心1w+。
通过云上的容器化部署、自动扩缩容、健康检查、可观测性等手段,提高了知几项目的持续交付能力和稳定性,形成了一套适合游戏知几自身的上云实践方案。本文将会介绍游戏知几项目中遇到的痛点以及探索出的一套可靠的上云实践方案。
游戏知几[1]是一款游戏智能 AI 产品和运营解决方案,它基于自然语言处理、知识图谱、深度学习等前沿技术,为游戏玩家提供一站式服务,包括游戏内外实时智能问答、游戏语音陪伴、自助流水查询、游戏内外数据互通、主动关怀防流失、产品合规保护等多种能力,目前已经接入包括王者荣耀、和平精英、PUBG mobile、天刀手游等六星游戏在内的80+款游戏,为海内外数以亿计的游戏用户提供服务,获得众多游戏项目和广大用户的持续好评。
同时游戏知几还提供了简便易用、性能良好的客户端 SDK 和功能完备的运营平台系统,支持模块化接入,显著降低了用户运营中的人力成本,提升了玩家的交互体验。
随着知几业务的不断发展,知几的部署架构也在不断地演进,逐步从最初的 IDC 部署架构迁移到当前的云原生部署架构,实现了业务服务的全面上云。
知几在最初采用 docker 部署的方案来部署服务,服务的 CI/CD 通过夸克平台实现,平台将编译打包好的服务推送到 docker 机进行部署。为了实现机器的水平扩容,运维同学会将 docker 环境整体打包成基准镜像,包括 IDC 的机器环境所依赖的环境,比如 CL5 agent,gse agent 等。当需要扩容时,将基准环境发布到扩容机器上进行扩容操作。
知几整体的部署架构如下图所示:
知几项目会对接 IEG 下的众多游戏,伴随着游戏接入的增多,流量也变得越来越大,知几项目的流量状况有以下特点:
因此,知几对服务的稳定性、可观测性以及服务治理的能力有很高的要求,需保证项目在流量突发的情况下能够正常运行,故障时能及时发现。
在 docker 部署的架构下,很难做到快速地自动扩缩容,主要问题有以下几个方面:
这些问题都会造成服务在扩容时的不及时,从而带来服务稳定性的隐患,同时也带来了业务同学的运维负担。除此之外,每年一次的机器裁撤也很痛苦,涉及机器确认、服务迁移、环境梳理等方方面面的操作。
因此,我们希望通过上云迁移,利用云原生的 HPA 能力来解决服务稳定性、裁撤等问题。
针对以上问题,当前知几实践了一套基于云原生的多机房部署方案。具体方案如下:
基于上述的部署方案,利用云原生的自动扩缩容能力可以方便地解决上述问题:
知几服务的上云迁移涉及外网和内网的众多服务,外网服务迁移的过程可通过运营商逐步对流量进行灰度:
内网服务的迁移则通过 STKE 支持的北极星、CL5 serivce 自动将 pod ip 注入到老服务的负载均衡当中,首先通过一个 pod 进行灰度,再逐步增加 pod 完成放量,最后摘除 IDC 的机器即可。通过这种方式,我们在三个月内完成了所有外网服务和后台服务的全量上云,并保证了迁移的平稳进行。
业务上云基础的点就是考虑怎么做标准化的容器部署和弹性服务。知几服务主要有三类,业务服务通常是 Go 服务,算法服务为 C++ 服务,需要考虑模型加载的问题,平台服务主要为 PHP 服务。在容器的标准化上,我们采用的是单容器模式,这样做的好处是每个 container 间互不影响,进程是作为容器的一号进程存在,一旦有问题 k8s 会自动把服务拉起,另外也便于资源的复用。
富容器的模式是把所有的进程都放在一个容器内,这样看似方便,能实现业务的无缝平滑的快速上云,但无论从未来的维护效率、安全还是健康检查、服务弹性上看都有问题,是中间态,违反了容器单一功能原则,也不符合云原生的理念。
知几在服务部署的过程中,积累了一些实践经验,通过云原生的对资源利用的优势,提升资源的利用率,降低运营成本。针对不同场景最小实例的配置如下:
通过降低单 pod 的 CPU,MEM request,满足日常运营需求,流量高峰期则通过 stke 的 HPA 能力来满足业务的需要,使日常 CPU 利用率能达到40%。由于 HPA 会导致业务容器的扩缩容,如果流量在服务未完成启动时接入或者流量还在访问时接销毁 pod,会导致流量的损失,因此需要开启就绪检测和 prestop 配置。
这里需要注意的是,就绪检查的启动延时设置不宜过短,这样系统会认为 pod 启动失败而不断重启,导致服务无法正常启动。
此外,stke提供的其他特性可以很好的满足知几的业务需求:
当前知几在线上部署了超过 1w 核,支撑知几 Sdk,第五人等多个应用服务,整体的利用率在40%左右。
STKE 提供的 HPA 能力能够很好的满足知几对扩缩容的需求,知几同时使用了定时 HPA 和动态 HAP 满足不同的场景:
这样很大程度上减少了开发、运维同学面对运营活动和突发流量时的心智负担,提高了服务稳定性。特别是定时 HPA,可以很方便的满足知几在未成年人保护方面对扩缩容的要求,系统可以在特定时间段完成系统容量的扩容和缩容,在保证系统平稳应对流量的同时也不会造成对资源的浪费。迁移上云后,知几通过这种方式保证了周末时段和线上多场运营活动的平稳进行。
系统的可观测性能够让开发同学根据系统输出快速监控、定位问题。可观测性可以从 Metrics、Log、Trace 三个方面来看。
知几整个上云迁移的过程随着公司云原生体系的基础设施的完善在不断的完善和优化,公司在相关领域的共建使得业务在实施过程中有了更多的选择。希望知几的实践能给更多的业务团队带来价值。未来在云原生的深入实践方面,团队还会在云原生标准化方向上(mecha 理念)做出更多的尝试。
[1]
游戏知几: 【https://gbot.qq.com/#/home】
[2]
dapr: 【https://github.com/dapr】
分享集赞拿好礼
转发本篇推文至朋友圈 集赞50个 并截图发送到腾讯云原生后台 随机抽取3名幸运鹅
送腾讯视频礼盒一个
截止时间:2022年5月24日12点
往期精选推荐