【Agones系列】Agones总结与展望

简介: 在过往的文章,我们介绍了Agones的网络、生命周期以及弹性扩缩的特性。在本篇文章,我们将介绍Agones的一些其他特性,并对Agones的定位和使用进行一定程度的总结。最后,谈一谈游戏云原生的展望。

在过往的文章,我们介绍了Agones的网络、生命周期以及弹性扩缩的特性。在本篇文章,我们将介绍Agones的一些其他特性,并对Agones的定位和使用进行一定程度的总结。最后,谈一谈游戏云原生的展望。

3e162d39-b69c-40d9-9089-23fac946509c.svg

其他特性

  • 玩家追踪。在之前介绍SDK时,有提到与Player相关的方法,其实在GameServer的Spec中可以定义player的相关字段,比如initialCapacity,将gs的初始容量设置为10,随着游戏的运行,游戏服也可以通过SDK.Alpha().SetPlayerCapacity(count)调用实现容量的改变。之前提到过可以使用SDK调用SDK.Alpha().GetPlayerCount()实现当前玩家数目的获取,游戏本身可以通过容量和当前数目的对比实现玩家管理,而Agones仅提供追踪作用,不会影响玩家连接行为。
  • 本地模式。在开发测试的场景下,需要通过Agones GameServer暴露服务,可以指定agones.dev/dev-address 开发机IP,使用Static portPolicy,创建一个gs但不创建pod。快速的进行调试。
  • 多集群分配。为了允许从多个集群进行分配,Agones 提供了一种机制来为分配请求设置重定向规则到正确的集群。GameServerAllocationPolicy 是 Agones 定义的用于设置多集群分配规则的 CRD。除了集群优先级,它还描述了目标集群的连接信息,包括游戏服务器命名空间、agones-allocator 端点和用于重定向分配请求的客户端 K8s secrets名称。游戏服务器将从priority数量最少的集群中分配。如果编号最小的集群中没有可用的游戏服务器priority,它们将从priority编号次之的集群中分配。对于具有相同优先级的集群,选择集群的概率相对于其权重。
  • 延迟测试。在全球部署服务时,客户端会需要根据延迟决定要连接到哪个集群。Agones默认安装并暴露了这样的测试服务,支持http/udp两种协议。

总结

首先,我们要清楚看到Agones是针对Delicated Game Server而设计的云原生负载,比较适合MOBA/FPS/TCG等有对局概念、需要匹配的游戏类型。这类游戏的特点就是生命周期短,更偏向无状态,可以快速地构建、删除Pod,实现资源的最大程度利用。所以,Agones的核心是提供了动态伸缩的能力,然而想要最大程度利用Agones伸缩性,需要配合OpenMatch使用。

OpenMatch是Google开源的另一项目,它提供了一种匹配机制,用户可自定义匹配方法在这套框架下实现对局的匹配。从实现逻辑上来看,Agones这部分是比较轻量的,重头部分在于OpenMatch提供的匹配能力,OpenMatch相对与Agones显得非常厚重,用户要想接入需要进行相对复杂的工作,也有不少公司在这部分做文章提供Saas服务,简化客户端接入。

如上文所述,Agones最佳实践的方式是通过每个Fleet配置一个FleetAutoscaler,定义buffer量,压缩高峰期的游戏服启动时间对用户的延迟体感,allocator会发现ready状态的gs服务,将其置为allocated,等待玩家匹配连接,而MatchMaker会做一系列匹配工作,找到这样的allocated gs,让其与玩家建立连接,等到对局结束,gs销毁或复用,旧pod(或新pod)又进入到ready状态。这里buffer定义的是allocated和ready的差值,如果现在的匹配需求并没有那么多,也就是allocated数量没有那么多,总体要创建的pod数量也会下降,这样一来弹性功能得以实现,资源的利用率将会得到提升。

展望

虽然Agones作为云原生游戏负载简化了游戏上云的复杂度、并提供了弹性扩缩的能力,但它依然有一些不可忽视的问题

  • 它并不适合生命周期长的游戏服,类似pve大世界类型游戏。这种游戏每个副本的状态差异是非常大的,提供水平伸缩的Fleet不适合管理这类游戏。
  • 它通过SDK实现状态感知,增加了改造成本,提高了游戏开发者接入的难度。
  • 它的网络模式是固定的,hostPort的方式并不能适用于所有场景。比如,对于一些IP端口固定的场景就无法满足。

其实,在实际的游戏市场中,MMO/MMORPG这类游戏的比重是非常大的,对于这类游戏的云原生化是不可忽视的需求。这类游戏重状态、弱弹性,目前在K8s中运维管理是非常复杂的,如何对这类游戏进行云原生改造是业界需要关注的问题。那么你觉得如何游戏云原生的痛点在哪?要如何做呢?

相关文章
|
Kubernetes Ubuntu 应用服务中间件
在Ubuntu22.04 LTS上搭建Kubernetes集群
在Ubuntu22.04.4上安装Kubernetes v1.28.7,步骤超详细
5536 3
在Ubuntu22.04 LTS上搭建Kubernetes集群
|
Kubernetes API Docker
Mac下安装k8s
Mac下安装k8s
1557 0
|
网络协议 Unix 应用服务中间件
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
如何使Nginx轻松实现10万并发访问量。通常来说,一个正常的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,如果Nginx服务器经过优化的话,则可以稳定地达到 904,000 次/秒 的处理性能,大大提高Nginx的并发访问量。
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
|
编解码 安全
租个5000人玩的游戏服务器一年多少钱?好用的游戏服务器推荐
​游戏服务器最重要的就是安全稳定,特别是需要防攻击,所以租用带防御的高防服务器是很有必要的。那么可以供5000人玩的游戏服务器一年大概多少钱呢?
4460 0
租个5000人玩的游戏服务器一年多少钱?好用的游戏服务器推荐
Debian 官方源换为国内的源的操作方法
apt-get update 报错,采用更换源的方式解决问题。
55836 0
|
Kubernetes 图形学 容器
【Agones系列】Agones初体验
本文介绍了Agones并在阿里云容器服务上运行Agones进行游戏服部署
【Agones系列】Agones初体验
|
Kubernetes 监控 jenkins
基于K8S实现代码自动化上线
基于K8S实现代码自动化上线
|
机器学习/深度学习 数据采集 算法
【OpenVI—论文解读系列】ICLR 2023 | 开源轻量人脸检测DamoFD
本文介绍我们被机器学习顶级国际会议ICLR 2023接收的论文 “DamoFD: Digging into Backbone Design on Face Detection" 论文链接:https://openreview.net/pdf?id=NkJOhtNKX91 开源代码:https://github.com/ly19965/EasyFace/tree/master/face_project/face_detection/DamoFD
1204 2
|
Linux 安全 关系型数据库
linux设置ulimit值永久生效
小知识的积累,转自 http://hi.baidu.com/moonelf9989/blog/item/1deadf12780fa0c5c2fd789d.html linux 默认打开文件数linux 默认打开文件数为1024个,通过ulimit -a 可以查看open files 修改这个限制可以使用ulimt -SHn 65536 永久生效需要进行下面设置: 1.
12232 0
|
存储 运维 Kubernetes
云原生游戏最佳实践系列| 学习笔记
快速学习云原生游戏最佳实践系列
云原生游戏最佳实践系列| 学习笔记