无服务器:游戏服务器指南

在云计算中,无服务器(serverless)已成为新的代名词。

以 AWS Lambda 等服务为首,无服务器架构承诺进行革命,甚至改变我们对应用程序部署和扩展的思考方式。

随着企业不断寻求敏捷且具有成本效益的解决方案,无服务器所承诺的消除服务器管理和自动扩展的吸引力已获得显著关注。

这种日益增长的兴趣并不仅限于传统的 Web 应用程序;它在各个领域引发了兴趣,促使专家研究其在不同环境中的可行性,包括游戏世界。

什么是无服务器计算?

从本质上讲,无服务器计算是一种云计算模型,可以在事件发生时执行后端功能,且无需传统的服务器设置。这个名称可能有些误导;服务器仍然参与其中,但开发人员不再需要管理它们。这是它的主要好处所在。使用无服务器:

  1. 可扩展性 变得自动。随着用户需求的波动,云提供商管理着扩展与缩减,确保最佳性能。

  2. 基础设施管理 不再由你负责。无需再进行服务器维护、补丁或更新;云提供商会处理全部事务。

  3. 成本效率 至关重要。用户仅为实际使用的计算能力付费,通常按照函数执行的毫秒计算,从而消除了浪费的过度配置。

这种新范式由主要的云提供商推动,其中 AWS Lambda 处于领先地位。其他显著的参与者包括为 Google Cloud Platform 用户提供服务的 Google Cloud Functions 和微软对无服务器趋势的回应 Azure Functions。每个提供独特的功能和集成,但都分享减少开发人员操作负担和简化应用程序部署的核心理念。

虽然有些人也称基于容器的应用程序为“无服务器”,但现实是标准机构仅将函数即服务(FaaS)称为无服务器。容器通常不仅仅包含实时执行的一个函数,因为它们带有一个二进制文件及其整个库和模块集合。它们与微虚拟机或标准虚拟机的关系更密切,而不是无服务器。

游戏服务器的现状

游戏服务器是我们沉浸式多人游戏体验背后的无名英雄。这些专业服务器实时协调、计算和同步游戏内事件。基本要求包括低延迟、高并发支持和强大的状态管理,以确保每个玩家的动作在所有连接的客户端上保持一致。

主要的服务器模型有两种:权威型和非权威型(例如点对点网络、继电器网络)。在权威型模型中,服务器对游戏状态拥有最终决定权,成为防止作弊和不一致的守门人。这对于有大量操作、经济系统(包括商店)和以性能/技能为基础的竞争游戏来说是强制性的。

相反,非权威型服务器更多依赖客户端计算,可能更容易受到漏洞的攻击。

然而,在这两者之间,持久连接的需求始终是核心,确保不间断的游戏体验和实时交互,而这些方面并不总是与每种云计算模型兼容。

为什么无服务器不总是与游戏服务器完美匹配

无服务器计算的突破性崛起,承诺可扩展性和降低开销,可能看起来是所有后端需求的灵丹妙药。然而,当与游戏服务器复杂的需求进行比较时,几种落差显现出来:

  1. 无服务器函数的短暂性

无服务器的核心在于其短暂性质。像 AWS Lambda 上的无服务器函数旨在迅速启动,执行任务,然后在短时间内消散。这种瞬态生命周期与持久实例(例如 MMO 或用户生成内容的游戏)的游戏服务器需求发生冲突,后者依赖于持久连接。玩家长时间参与游戏,需要服务器保持一致、不断开连接——这一特征在无服务器世界中明显缺失。

  1. 状态管理挑战

无服务器函数本质上是无状态的。每次函数调用都是独立的,无法保留对过去交互的记忆。相反,游戏服务器则是有状态的指挥者,熟练地管理不断演变的游戏状态,从玩家分数到游戏内位置。当使用无服务器来处理这些任务时,开发人员面临着在不同、不相连的函数之间保持状态的艰巨挑战,导致复杂性和潜在的不一致性。

  1. 延迟问题

尽管无服务器解决方案在许多领域表现出色,但它们并不免于“冷启动”——调用空闲函数时出现的延迟。在游戏中,等待空闲的游戏服务器可能导致流失(34% 的玩家会在体验到延迟时完全退出游戏),或者在精确反应可能决定胜负的情况下,这样的延迟尖峰是不可接受的。游戏对低延迟体验的一致性要求突显了其重要性。

  1. 成本影响

无服务器的按执行付费模型对偶发、短暂任务而言非常诱人。然而,游戏服务器以其连续、长期运行的进程,可能会发现无服务器不太具有成本效益。长时间的执行可能会累计费用,可能超过传统或专用服务器的支出。

  1. 支持的语言

从根本上讲,无服务器平台要求你提供要执行的代码(即函数)。这意味着你无法提供来自游戏引擎的标准构建。这也意味着如果你的首选语言未被无服务器平台支持,你可能无法使用它。

无服务器在游戏中的适用案例

虽然无服务器架构可能不适合核心游戏服务器操作,但它们在特定的游戏相关场景中表现出色。这些通常是非权威性和非连续性质的任务:

  1. 排行榜: 快速更新和检索玩家排名或得分可以由无服务器函数高效处理。这些定期更新非常适合无服务器的短暂性质。

  2. 玩家身份验证: 在登录或注册时验证玩家凭证的偶发行为非常适合无服务器。其可扩展性确保即使在用户峰值负载期间也能顺利进行身份验证。

  3. 通知: 发送警报、游戏更新或玩家通知可以卸载给无服务器函数。这些是孤立的任务,不需要持久连接,可以利用无服务器的优势。

  4. 网络游戏: 基于网络标准(即 HTML5)的短暂游戏可以受益于运行在 FaaS/无服务器中的服务器端元素。较小的休闲游戏所需的逻辑可能足够小,适合这些架构。

游戏服务器的无服务器替代方案

考虑到游戏服务器的严格要求,尤其是确保一致的实时体验,寻找无服务器的替代方案变得尤为重要。以下是一些针对游戏领域的经过验证的解决方案:

  1. 专用游戏服务器解决方案: 传统的专用服务器在游戏社区中仍然占有一席之地。开发人员可以充分控制硬件和软件,优化性能、安全性和可定制性,确保游戏顺利运行。托管物理服务器需要大量资金和资源,因此需要一个至少有最小规模的工作室。

  2. 基于云的虚拟机: 在 AWS EC2 或 Google Compute Engine 等云平台上的虚拟机(VM)提供灵活性与强大的平衡。开发人员可以根据需要扩展资源,利用云巨头的广泛基础设施。我们开始看到对裸金属即服务的趋势。虽然它们提供了一些标准云的好处(即按需服务),但启动时间使其在玩家激增时快速扩展时很难销售。它们被认为比虚拟机更具性能,但随着最新一代虚拟机管理程序能够充分利用 CPU 并将其传递给虚拟机,这种说法也已过时。

  3. 托管游戏服务器解决方案: 像 AWS GameLift 或 Google Cloud Game Servers 这样的服务最初旨在通过全托管服务简化游戏服务器托管。它们结合了云可扩展性的优势与专为游戏量身定制的特殊工具,处理诸如匹配、玩家会话和服务器扩展等任务。然而,它们的复杂性和按区域增量收费的供应商锁定托管使得它们成为一个极其昂贵的选择。它们也无法解决延迟这一巨大用户流失的源头,因其受到位置的有限覆盖影响,50% 的用户因延迟退出游戏。幸运的是,像 Edgegap 这样的服务通过多云网络克服了这些限制,自动在全球范围内部署游戏服务器,覆盖所有地点,并且最好的一点是——按玩家使用量付费。

结论

在快速发展的技术领域,很容易想要追随最新趋势。然而,正如无服务器与游戏服务器的困境所凸显的,并非每项创新都是普遍适用的。

实时交互、持久连接和细致状态管理之间的复杂关系凸显了量身定制基础设施的重要性。

虽然无服务器在特定领域提供了变革性解决方案,但游戏服务器需要更为专业化的方法。对于开发者和游戏企业而言:在采纳下一个重大事物之前,全面评估你的游戏服务器需求是至关重要的。我们确实看到了无服务器在某些用例及相关负载中成为后端的一部分的未来,但尚不适用于权威服务器本身。

打造完美游戏体验的关键不仅在于迎接创新,还在于确保所选技术与游戏世界独特的挑战和需求无缝对接。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes