使用 Azure Service Fabric 实现同步多人游戏

在此示例中,游戏服务器池由 Azure Service Fabric 管理,负责创建和编排 Azure 虚拟机规模集。 每个地区都将有自己的游戏服务器池。

体系结构关系图

S使用 Azure Service Fabric 实现同步多人游戏

相关服务

部署模板

请参阅此存储库,其中包含可在设置群集时使用的可自定义的 Service Fabric 群集示例模板。 此存储库根据我们看到的其他开发者创建的输入和群集类型构建而成,旨在提供各种模板。 这些模板适用于 Windows 和 Linux 群集。

最基础的入门模板是此模板。 它支持部署运行 Windows Server 2016 数据中心的安全的 5 节点、单节点类型 Service Fabric 群集,其容器位于 Standard_D2_v2 大小的虚拟机规模集上,已开启 Azure 诊断并启用网络安全组。

单击下面的按钮,将项目部署到您的 Azure 订阅:

此操作将触发模板部署,即系统会将 azuredeploy.json ARM 模板文件部署到您的 Azure 订阅,从而创建必要的 Azure 资源。 这可能会在您的 Azure 帐户中产生相应费用。

请查看一般指南文档,其中有一篇文章概述了 Azure 服务的命名规则和限制。

游戏服务器二进制文件可存储在 Azure 存储中,也可存储在 Azure 容器注册表中,因为这两者都能供 Service Fabric 使用。

分步操作

  1. 玩家的设备客户端连接到 Azure 流量管理器,以传送要查找游戏服务器的玩家请求。
  2. Azure 流量管理器连接到具有最低延迟的区域,并指向可获取可用游戏服务器的 Matchmaker。
  3. Matchmaker 包含选择游戏服务器所需的所有信息,并且如果需要更多容量,它会主动 ping Azure Service Fabric 服务,以开始在特定的 Service Fabric 群集中横向扩展。
  4. Azure Service Fabric 服务收到该请求并开始横向扩展。如果设置了自动缩放,它可能会根据已建立的规则主动开始该流程。
  5. 游戏服务器会在游戏会话结束后且服务器再次可用时,定期向 Matchmaker 发送状态更新以及它的当前 IP 地址和端口。
  6. 每台玩家设备都使用 Matchmaker 提供的连接信息直接连接到游戏服务器。

(可选)在游戏会话结束后,相关信息可存储在 Azure 存储帐户中。

缩放

主要有以下两种方法:

  1. Matchmaker 不控制缩放。 Azure Service Fabric 拥有缩放要求,即使用 Azure Service Fabric 自动缩放。 在本例中,服务会根据游戏服务器所报告的负载或基于资源使用情况动态缩放游戏服务器。 自动缩放提供出色的灵活性,支持按需预配游戏服务器的其他实例或分区。 整个自动缩放流程都是自动化且透明的,只要您设置了策略,就无需在游戏服务器级别进行手动缩放操作。 自动缩放可在创建时打开,也可以随时通过更新打开。

    在负载会随着时间的推移发生变化的情形中(例如在多人游戏中),通常会用到自动缩放。

  2. 或者,如本例中所示,您可以向 Matchmaker 分配任务来主动告知 Azure Service Fabric 何时横向扩展。最佳做法是使用池管理模式

    此模式为以下情形提供了解决方案:应用程序要求能够在运行时动态创建 Service Fabric 服务实例,最主要是通过调用 CreateServiceAsync 进行创建。 它可让您注册应该管理的服务,并将确保已配置的可用服务实例数量在池中可用。

    完成部署和初始化后,游戏只需调用管理器来“索要”一个服务实例,就会返回一个指向实例的指针。可以使用该指针来返回游戏之前用过的由唯一 ID 确定的实例,或返回尚未分配的可用实例。 如果有服务实例在一段时间内处于空闲状态,管理器将停用它们,以在群集中打开更多容量。

    使用此模式的主要优势是,在手动实例化新实例时可大幅缩短游戏可能延迟的时间。

请参阅在 Server Fabric 中进行缩放,了解如何构建可缩放的游戏。

其他资源和示例

要成功管理 Azure Service Fabric 游戏和群集,建议执行一些操作来优化可靠性。 请参阅本文档,其中涵盖安全性、网络、基础结构即核心以及监控等主题。

定价

如果您没有 Azure 订阅,可以创建免费帐户,开始使用 12 个月的免费服务。 除非您超出这些服务的使用限制,否则无需为 Azure 免费帐户中包含的这些免费服务付费。 了解如何通过 Azure 门户使用情况文件查看服务使用情况。

您需要承担运行这些参考体系结构时所使用的 Azure 服务的费用。 总金额将因使用情况而异。 请参阅参考体系结构中使用的每项服务的定价网页:

您还可以使用 Azure 定价计算器,以配置和估算您计划使用的 Azure 服务的成本。