

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon GameLift Servers FleetIQ 逻辑
<a name="gsg-howitworks-logic"></a>

下图说明了 Amazon GameLift Servers FleetIQ 在与 Amazon EC2 配合进行游戏托管时的角色。它的主要目标是找到尽可能*好的*游戏服务器来托管游戏会话，并为玩家提供最佳的游戏体验。 Amazon GameLift ServersFleetIQ将*最佳*资源定义为那些以最低成本提供最高游戏托管可行性的资源。 Amazon GameLift ServersFleetIQ通过两种关键方式实现这一目标：第一，在 Auto Scaling 组中仅允许可行的实例类型，其次是在该组的可用资源中有效地放置新的游戏会话。

![\[Amazon GameLift Servers FleetIQ 与 Amazon EC2 配合使用\]](http://docs.amazonaws.cn/gameliftservers/latest/fleetiqguide/images/gsg-howitworks-logic.png)


## 使用最佳实例类型填充自动扩缩组
<a name="gsg-howitworks-logic-rebalancing"></a>

自动扩缩组的任务是启动新实例并停用旧实例，同时维护托管资源集合并扩展该集合以满足玩家需求。为此，自动扩缩组依赖于您所需的实例类型列表。的工作Amazon GameLift ServersFleetIQ是不断检查这些所需实例类型的可行性，并更新 Auto Scaling 组的列表。此过程称为实例平衡。它可确保自动扩缩组中的实例不断刷新，以便始终仅使用当前可行的实例类型。

Amazon GameLift ServersFleetIQ影响 Auto Scaling 组如何通过以下方式选择最佳实例类型：
+ **它决定竞价型 and/or 按需实例的使用情况。**Amazon GameLift ServersFleetIQ游戏服务器组配置了平衡策略，这会影响 Auto Scaling 组使用竞价型和/或按需实例的方式。竞价型实例由于可用性波动和潜在[中断](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/spot-interruptions.html)，可以具备较低的成本。Amazon GameLift Servers FleetIQ 最大限度地减少了游戏服务器托管的这些限制。按需型实例成本更高昂，但在您需要时可提供更可靠的可用性。
+ **它限制新实例只能在可行的实例类型上启动。**Amazon GameLift Servers FleetIQ 游戏服务器组维护着所需实例类型的主列表。实例平衡过程使用预测算法，持续评估列表中每种所需的实例类型，以确定游戏托管的可行性，该算法会查看实例类型的最新可用性和中断率。评估后，会Amazon GameLift ServersFleetIQ不断更新 Auto Scaling 组的所需实例类型列表，使其仅包括当前可行的实例类型。
+ **它会标记不可行的实例类型的现有实例。** Amazon GameLift ServersFleetIQ标识 Auto Scaling 组中当前不可行的实例类型的现有实例。这些实例标记为*耗尽*，这意味着将终止这些实例并使用新实例替换。对于已启用游戏服务器保护的实例，终止将推迟到任何活动的游戏会话正常结束。

随着自动扩缩组启动和停用实例，它将持续维护针对游戏托管进行优化的集合，即使低成本竞价型实例类型的可用性不断波动也是如此。平衡活动仅在具有活动实例的游戏服务器组上进行。在[竞价平衡过程](gsg-lifecycle-rebalance.md)中了解有关此过程如何工作的详细信息。

## 有效地放置游戏会话
<a name="gsg-howitworks-logic-fleetiq"></a>

Amazon GameLift Servers FleetIQ 跟踪游戏服务器组中所有活动的游戏服务器，并使用此信息来确定如何最好地放置新游戏会话和玩家。

要启用 Amazon GameLift Servers FleetIQ 跟踪游戏服务器，您的游戏服务器软件必须报告其状态。您的自定义 AMI 控制在每个实例上启动和停止新游戏服务器进程的方式。当新的游戏服务器启动时，它会注册到 Amazon GameLift Servers FleetIQ，表示已准备好托管游戏会话。在注册后，游戏服务器定期报告其运行状况以及当前是否托管游戏会话。当游戏服务器关闭时，它会取消注册 Amazon GameLift Servers FleetIQ。

要启动新的游戏会话，您的游戏客户端（或配对器或其他客户端服务）会向 Amazon GameLift Servers FleetIQ 发送游戏服务器请求。Amazon GameLift Servers FleetIQ 找到一个可用的游戏服务器，为新的游戏会话认领该服务器，并使用游戏服务器 ID 和连接信息进行响应。然后，游戏会提示游戏服务器更新其状态，并为进入的玩家启动新的游戏会话。

选择游戏服务器来托管新的游戏会话时，Amazon GameLift Servers FleetIQ 使用以下决策过程以通过可行的低成本竞价型实例优化放置：

1. 在可能的情况下，Amazon GameLift Servers FleetIQ 在已经托管其他游戏会话的实例上放置新的游戏会话。通过打包（但不过载）某些实例并保持其他实例为空闲状态，自动扩缩组能够在不需要空闲实例时快速缩减空闲实例，从而降低托管成本。

1. Amazon GameLift Servers FleetIQ 忽略标记为*耗尽*的实例，即不适用于游戏托管。这些实例仅为持现有的游戏会话而保持运行。除非没有其他游戏服务器可用，否则它们不能用于新的游戏会话。

1. Amazon GameLift Servers FleetIQ 确定在可行的实例上运行的所有可用游戏服务器。

您可以为游戏服务器组启用游戏会话保护，以防止自动扩缩组终止具有正在运行游戏会话的实例。