

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

# 为竞价型实例构建队列
<a name="spot-tasks"></a>

通过使用竞价型实例集，您可以大幅节省托管成本。有关竞价型实例集及其使用方法的更多详细信息，请参阅[按需型实例和竞价型实例](gamelift-compute.md#gamelift-compute-spot)。

如果您的游戏托管解决方案包括竞价型实例集，则必须使用游戏会话放置队列。Amazon GameLift Servers 使用队列在多个游戏托管资源中进行搜索，并选择最佳资源来托管新游戏会话。对于竞价型实例集，队列对于最大限度地降低托管成本和避免竞价型实例可能出现的中断尤为重要。本主题可帮助您设置弹性队列，即使出现中断、减速和故障，该队列也可以继续为玩家托管游戏。您可以根据多个因素（包括托管成本），自定义队列如何确定可用托管资源的优先级。

您是否在使用 FlexMatch 进行对战？ 您可以将队列与竞价型实例集配合使用，以便进行对战游戏会话放置。

## 实施竞价型实例集任务
<a name="spot-tasks-queue"></a>

在创建或更新您的游戏托管解决方案以便使用竞价型实例集时，请完成以下任务。有关如何构建可优化竞价型实例可用性和弹性的队列的更多详细指南，请参阅[借助竞价型实例集降低游戏托管成本](fleets-spot.md)。

1. **为您的游戏会话队列选择并创建一组实例集目标。**

   首先决定您想让队列放置游戏会话的位置。队列可以在多个实例集中搜索以找到最佳位置。每个实例集仅包含一种实例类型，但可覆盖多个地理位置。如果队列关联的实例集在位置和实例类型上均具备多样性，则更有可能实现成功的游戏会话放置。请参阅这些最佳实践，了解如何设计有效且具有弹性的竞价型实例优化队列。

1. **创建针对竞价型实例优化的游戏会话队列。**

   创建队列并针对您的竞价型实例集进行配置。请参阅[创建游戏会话队列](queues-creating.md)以帮助您创建和配置新队列。您可以使用Amazon GameLift Servers控制台或 AWS CLI 来创建或编辑队列。
   + 添加步骤 1 中的实例集目标位置。
   + 根据需要确定目标位置的优先顺序。默认情况下，Amazon GameLift Servers 会优先按成本排序，其次才考虑目标区域，因此仅当不同区域间的最低成本相同时，才会根据目标区域顺序进行分配。
   + 如果您希望将游戏托管成本的优先级置于玩家延迟之上，请提供自定义放置优先级。请参阅[优先考虑游戏会话放置](queues-design-priority.md)。

1. **更新解决方案中的其他组件以使用新队列。**

   当您的解决方案使用针对竞价型实例优化的队列来启动新的游戏会话时，队列会自动避免将游戏会话置于中断可能性很高的实例集中。相反，它会在所有可行的实例集中搜索与您定义的优先级相匹配的资源，包括玩家延迟、托管成本和目的地顺序。
   + 如果您未使用 FlexMatch：更新您的后端服务，以在游戏会话请求中指定新的竞价型实例优化队列。后端服务代表您的游戏客户端（使用 `StartGameSessionPlacement()`）向 Amazon GameLift Servers 发出 API 请求，并且每个请求都必须指定队列名称。要获得在游戏客户端中实施游戏会话放置的帮助，请参阅[创建游戏会话](gamelift-sdk-client-api.md#gamelift-sdk-client-api-create)。
   + 如果您使用了 FlexMatch：更新您的对战配置，将游戏会话请求发送到新的竞价型实例优化队列。当对战系统形成玩家匹配时，它会向指定队列发送游戏会话放置请求，以开始该对战的新游戏会话。只有 FlexMatch 模式设置为“托管”的对战配置才能指定放置队列。您可以使用 AWS CLI 或Amazon GameLift Servers控制台更新配对配置（参见[编辑配对配置](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-create-configuration-edit.html)）。

1. **评估 竞价型实例集和队列的性能。**

   在Amazon GameLift Servers控制台中或通过 Amazon 查看Amazon GameLift Servers指标 CloudWatch 以查看绩效。有关 Amazon GameLift Servers 指标的更多信息，请参阅 [Amazon GameLift Servers使用 Amazon 进行监控 CloudWatch](monitoring-cloudwatch.md)。关键指标包括：
   + 中断率 – 使用 `InstanceInterruptions` 和 `GameSessionInterruptions` 指标跟踪实例和游戏会话的竞价型实例相关中断的数量和频率。回收实例的游戏会话的状态为 `TERMINATED`，状态原因为 `INTERRUPTED`。
   + 队列有效性 – 跟踪放置成功率、平均等待时间和队列深度，以确认竞价型实例集不会影响队列性能。
   + 实例集使用情况 – 监控有关实例、游戏会话和玩家会话的数据。按需型实例集的使用情况可以表明队列为了避免中断而避免放置到竞价型实例集中。

## 带有竞价型实例集的队列的最佳实操
<a name="queues-design-spot"></a>

 在为竞价型实例创建实例集和队列时，请使用以下最佳实践。
+ **扩大队列的地理覆盖范围。**即使你的玩家聚集在一个单一的队伍中 AWS 区域，也要将相邻的位置添加到你的竞技队伍中。这种方法提高了队列在区域减速、故障和竞价型实例中断期间保持容量的能力。多位置实例集适用于竞价型实例和按需型实例。
+ **使队列的实例类型覆盖范围多样化。**Amazon GameLift Servers 会根据实例类型评估竞价型实例可行性，因此拥有具有各种实例类型的竞价型实例集可以减少多个竞价型实例集同时不可用的可能性。至少包括两个竞价型实例集，每个位置的实例类型各不相同。
**注意**  
定价基于您使用的实例，而不是实例集的数量。运行五个队列，每个队列有 10 个实例，与运行 50 个成本相似的实例的实例集相同。定价因实例类型、大小和位置而异。

  对竞价型实例类型进行分组的提示：
  + 使用同一系列中的实例类型，例如 `m6g.medium`、`m6g.large` 和 `m6g.xlarge`。实例类型越大，成本越高，但也可以同时托管更多的游戏会话。
  + 选择广泛可用的实例类型。通常，旧一代系列（例如 C5、M5 和 R5）和常见规模（例如 .large、.xlarge 和 .2xlarge）具有更好的可用性。
  + 在 Amazon GameLift Servers 控制台中查看 30-90 天的定价历史记录。寻找可用性模式一致的实例类型。
  + 使用 Amazon GameLift Servers 控制台（实例集创建工具）来探索实例类型的位置覆盖范围。
+ **添加按需型实例集以获得备份容量。**每当竞价型实例集不可用时，游戏托管可以切换到按需型实例集。在每个位置至少放置一个按需型实例集以保持低玩家延迟。为您的备用按需型实例集添加自动扩缩功能，以便在不需要按需型实例集时缩减其规模。
+ **为所有实例集目的地分配别名。**为队列的每个目的地创建别名。别名可以让您在需要更换实例集时更轻松、更高效地操作。
+ **应用队列优先级策略。**您可以自定义队列如何确定游戏会话放置位置的优先顺序（有关更多详细信息，请参阅[优先考虑游戏会话放置](queues-design-priority.md)）。对于针对竞价型实例优化的队列，按成本划分优先级可确保尽可能使用低成本的竞价型实例集。

  您还可以通过指定目的地顺序来确定某些实例集的优先级。例如，一些用户指定一组主实例集供常规使用，并将一组辅助实例集指定为备用。在此情况下，将实例集的目标顺序设置为首先列出主实例集。然后，配置队列的优先顺序，先是目的地，然后是成本。