阿里巴巴中间件 07月27日 04:53
APIG x OKG:游戏连接治理的「最后一公里」
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了新一代游戏网关如何通过OKG(OpenKruiseGame)与APIG(云原生API网关)的结合,在不侵入业务架构的前提下,实现游戏服务器的优雅下线和配置无感变更。文章详细阐述了针对游戏服务强状态特性,如何利用自定义生命周期钩子和API网关的流量治理能力,保障玩家连接的连续性。同时,也介绍了该网关如何优化长连接场景下的配置变更,确保玩家体验不受影响,并提供了零门槛接入、易于观测和简化的API治理等优势,旨在帮助游戏开发团队聚焦核心玩法创新。

🌟 **优雅下线能力保障玩家体验**:新一代游戏网关通过OpenKruiseGame的自定义生命周期钩子(如PreDelete),配合云原生API网关的精细化流量治理,实现了游戏服务在下线过程中对玩家连接的平滑过渡。当服务进入下线状态时,API网关会即时剔除新请求,同时保留现有活跃连接,直至游戏服务完成内部的生命周期管理流程,确保玩家会话的连续性,避免数据丢失和体验中断。

💡 **配置无感变更优化服务维护**:针对游戏长连接场景的严苛需求,云原生API网关在开源Higress网关基础上进行了增强,解决了传统方案中高阶配置变更(如自定义插件、日志格式、全局参数调整)可能导致连接中断的问题。通过独特的连接保护机制,即使进行复杂的配置调整,也能保证玩家的长时间会话不被中断,从而实现真正的“无感变更”,提升了服务的可维护性和灵活性。

🚀 **零门槛接入与全维度可观测性**:该解决方案支持“即插即用”的接入方式,无需对现有游戏服务进行代码改造,最快可在数分钟内完成部署,让游戏服务即刻享受云原生优势。此外,通过丰富的Prometheus指标和预置的仪表板,提供了全维度的数据可观测性,使游戏服务的健康状态一目了然,简化了运维管理。

🔧 **简化的API治理与社区支持**:提供直观的控制台界面,简化了API管理流程,使流量控制、负载均衡等高级功能触手可及。文章还鼓励开发者加入OKG和Higress的开源社区交流,共同推动云原生游戏连接治理的发展。

原创 赵楠, 刘秋阳 2025-07-24 18:15 浙江

新一代游戏网关,在不侵入业务架构的同时实现游戏服优雅下线、配置无感变更等能力。

游戏连接治理的最后一公里

Aliware

游戏有状态的属性决定了玩家的连接需要精细化处理。在传统端游场景,游戏往往通过业务网关维护四层协议连接,或者为低延迟游戏提供独立访问地址以实现客户端直连。

随着小程序与 H5 游戏的普及,基于七层协议的网络游戏面临双重挑战:一方面需要控制开发运维成本,另一方面必须满足创意验证对快速版本迭代的要求。这种矛盾催生了对高效弹性架构的迫切需求——通过云原生转型实现资源利用效率优化与游戏发布流程革新。

在七层网络场景下,玩家状态管理与连接治理形成深度耦合。玩家连接/退出事件与服务实例的动态伸缩之间存在精密平衡关系,特别是在自动化运维场景下(如服务实例下线、版本灰度发布等),如何保障玩家会话连续性成为云原生游戏连接治理的关键挑战。这不仅涉及连接状态的实时感知与迁移,更需要构建从基础设施到业务层的全栈治理能力,这正是实现云原生游戏连接治理的"最后一公里"。

基于业务状态的流量管理

Aliware

为拉近这最后一公里的路途,OKG(OpenKruiseGame)【1】与 APIG(云原生 API 网关)【2】结合各自优势(细粒度的状态感知与精细化流量治理),致力于打造新一代游戏网关,在不侵入业务架构的同时实现游戏服优雅下线、配置无感变更等能力。



优雅下线

游戏服务的强状态特性决定了其对优雅下线的迫切需求。传统下线操作往往无法满足游戏服务对特定条件的严格要求,可能导致玩家体验中断或数据丢失。为应对这一挑战,OpenKruiseGame 引入了自定义生命周期钩子的功能,突破了 Kubernetes 原生 PreStop 钩子机制的局限性,为游戏服务提供了精确到毫秒级的生命周期控制能力。

云原生 API 网关与 OKG 深度融合,构建了一套完整的游戏服务优雅下线解决方案。当 OKG 服务进入 PreDelete 状态时,云原生 API 网关会及时从注册中心剔除该实例,确保新的请求不再路由至即将下线的服务。与此同时,已建立连接的玩家会话则被智能保留,直至 OKG 服务完成自定义的生命周期管理流程【3】,实现了新老请求的分流处理,最大程度地保障了玩家体验的连续性,具体如下图所示:

为了直观展示这一过程,我们将以云原生 API 网关为例,通过监控活跃长连接数这一关键指标来模拟玩家数量变化,详细阐述 OKG 服务在云原生 API 网关上的优雅下线全流程。这不仅体现了云原生技术在游戏场景下的精细化应用,更彰显了现代游戏服务治理对状态感知与流量调度的高度融合。

接下来视频将直观的演示 OKG 服务在云原生 API 网关环境中的优雅下线过程。


如演示所示,具体部署步骤如下:


1. 前置步骤:


2. OKG 服务部署:

为了模拟真实的游戏环境,我们选择了开源游戏 Posio 作为我们的 demo 游戏服。通过以下 yaml 文件,可以快速构建一个多实例的游戏服务集群。

apiVersion: game.kruise.io/v1alpha1
kind: GameServerSet
metadata:
  name: postio
  namespace: default
spec:
  lifecycle:
    preDelete:
      labelsHandler:
        gs-sync/delete-block: "true"
  replicas: 3
  updateStrategy:
    rollingUpdate:
      podUpdatePolicy: InPlaceIfPossible
  network:
    networkType: Kubernetes-Ingress
    networkConf:
    - name: IngressClassName
      value: "higress"
    - name: Port
      value: "5000"
    - name: Path
      value: /
    - name: PathType
      value: Prefix
    - name: Host
      value: game<id>.postio.example.com
  gameServerTemplate:
    metadata:
      labels:
        gs-sync/delete-block: "true"
    spec:
      containers:
        - image: registry.cn-beijing.aliyuncs.com/chrisliu95/posio:8-24
          name: postio
      volumes:
        - name: gsinfo
          downwardAPI:
            items:
              - path: "state"
                fieldRef:
                  fieldPath: metadata.labels['game.kruise.io/gs-state']
  serviceQualities:
    - name: healthy
      containerName: minecraft
      permanent: false
      exec:
        command: ["bash""./probe.sh"]
      serviceQualityAction:
        - state: true
          result: done
          labels:
            gs-sync/delete-block: "false"
        - state: false
          opsState: None

在这个示例中,我们通过 GameServerSet 创建了多个游戏服实例,每个实例都有其唯一的访问域名。具体而言:

游戏服0:game0.postio.example.com

游戏服1:game1.postio.example.com

游戏服2:game2.postio.example.com

这种域名设计不仅便于客户端精确访问不同的游戏服,也为后续的负载均衡和流量调度奠定了基础。通过这样的部署结构,我们可以模拟复杂的游戏服务环境,为优雅下线的实验提供真实可靠的测试平台。

在云原生游戏服务的优雅下线过程中,精确的状态感知和玩家会话管理至关重要。我们通过 YAML 脚本来实现这一复杂的过程,该脚本融合了状态检测、玩家活跃度监控和优雅退出机制。

1. 状态感知
脚本首先从/etc/gsinfo/state文件中获取当前游戏服务(GS)的状态。这一步骤体现了对服务生命周期的实时监控能力,是实现精确控制的基础。


2. 下线触发判断
当检测到 GS 状态为 "PreDelete" 时,脚本识别出服务已进入下线阶段。这种精确的状态判断确保了下线操作仅在适当的时机启动,最大限度地减少对玩家体验的影响。

3. 玩家活跃度评估
进入下线流程后,脚本会持续监控与该游戏服务相关的活跃连接数。这里,我们巧妙地利用 API 云原生网关提供的连接数指标作为玩家在线状态的代理指标。这种方法不仅简化了实现,还提供了一个可靠的玩家活跃度衡量标准。

4. 优雅退出机制
脚本会循环检查活跃连接数,直到该数值降为零。只有在确认所有玩家都已安全断开连接后,脚本才会输出 "done" 并以退出码 0 结束执行。这种机制确保了每一个玩家会话都得到了妥善处理,真正实现了"优雅"下线。

#!/bin/bash


file_path="/etc/gsinfo/state"


if [[ ! -f "$file_path" ]]; then
    exit 1
fi
data="query=sum(envoy_cluster_upstream_cx_active{cluster_name=~\"outbound_5000__${HOSTNAME}.default.svc.cluster.local\"})"


state_content=$(cat "$file_path")


if [[ "$state_content" == "PreDelete" ]]; then
     json=$(curl -s -G --data-urlencode $data http://prometheus.com/api/v1/query)
     value=$(echo "$json" | grep -o '"value":\[[^]]*\]' | sed 's/.*"\([^"]*\)"]/\1/')
     if [[ -z "$value" || "$value" == "0" ]]; then
       echo "done"
       exit 0
     fi
     exit 1
fi
exit 1


无感变更

在现代游戏生态中,服务的持续优化和更新是保持竞争力的关键。然而,传统的配置变更方式往往伴随着服务中断,这对于游戏场景而言是难以接受的。玩家沉浸式体验的核心在于不间断的实时交互,即便是瞬间的连接中断也可能导致游戏体验的严重退化。因此,实现真正的"无感变更"成为了游戏服务质量提升的重中之重。

为了应对游戏长连接场景中配置变更的独特挑战,云原生 API 网关在开源 Higress 网关基础配置能力之上【4】针对性地解决了传统方案在高阶能力变更(如自定义插件添加与删除、日志格式添加、全局参数变更)时面临的连接中断问题,特别契合游戏长连接的严苛需求。

云原生 API 网关针对游戏长连接场景中配置变更的独特挑战,在开源 Higress 网关基础配置能力之上,推出了一套全面的商业化解决方案。这一方案不仅继承了 Higress 的优势,更突破性地解决了传统方案在高阶能力变更时面临的连接中断问题,完美契合游戏长连接场景的严苛需求。

云原生 API 网关解决方案具有以下核心优势:

1. 高阶能力无感变更


重点解决了自定义插件的添加与删除、日志格式的动态调整、全局参数等高阶配置修改时的连接保持问题。这些操作现在可以在不中断现有游戏会话的情况下平滑完成,极大地提升了服务的可维护性和灵活性。

2. 长连接场景优化


专门针对游戏行业普遍存在的长连接特性,设计了独特的连接保护机制。即使在进行复杂的配置调整时,也能确保玩家的长时间会话不被中断,从而维持游戏体验的连续性。


0 改造、易接入

1. 零门槛接入,瞬时提升

2. 全维度可观测性

3. 简化的 API 治理

通过这套解决方案,我们不仅缩短了云原生游戏连接治理的"最后一公里",更为游戏服务提供商开辟了一条全新的发展道路。它使得游戏开发团队能够将更多精力投入到核心 gameplay 的创新中,同时享受到云原生技术带来的全方位性能提升和运维效率优化。

加入 OKG 和 Higress 开源社区交流

欢迎大家通过搜索群号或扫描群码的方式进入钉钉群交流,云原生游戏交流群的钉钉群号为:44862615,Higress 社区交流 3 群的钉钉群号为:107690002780。


相关链接:

【1】OpenKruiseGame

https://openkruise.io/kruisegame/introduction

【2】云原生 API 网关

https://help.aliyun.com/zh/api-gateway/cloud-native-api-gateway/product-overview/what-is-cloud-native-api-gateway

【3】自定义生命周期 

https://openkruise.io/zh/kruisegame/user-manuals/lifecycle

【4】Higress × OpenKruiseGame 游戏网关最佳实践

https://developer.aliyun.com/article/1440348?spm=5176.26934562.main.1.5769356b3EZsWh

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

游戏网关 云原生 优雅下线 无感变更 OKG API网关
相关文章