Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用基于规则的策略自动扩展

当自动扩展队组的容量以应对玩家活动时,基于规则的扩展策略提供精细的控制措施。对于每个策略,您可以将队组扩展与若干可用的队组指标之一关联、确定触发器点并自定义对应的扩展或缩减事件。基于规则的策略尤其适用于对基于目标的扩展进行补充以应对特殊情况。

基于规则的策略类似于以下语句:“如果队组指标达到或超过阈值持续特定时间长度,则按指定的数量更改队组容量。” 本主题介绍用于构建策略语句的语法,并提供帮助以创建和管理基于规则的策略。

管理基于规则的策略

将 AWS 开发工具包或 AWS CLI 与 Amazon GameLift 服务 API 结合使用,以创建、更新或删除基于规则的策略。您可以在 Amazon GameLift 控制台中查看所有活动的策略。

要临时禁用队组的所有扩展策略,请使用 AWS CLI 命令 stop-fleet-actions

创建或更新基于规则的扩展策略 (AWS CLI):

  1. 设置容量限制。 使用 update-fleet-capacity 命令设置其中一个限制值,或同时设置这两个限制值。有关帮助信息,请参阅设置容量限制 (AWS CLI)

  2. 创建新策略。 打开命令行窗口,并使用 put-scaling-policy 命令来设定您的策略的参数设置。要更新现有策略,请指定策略的名称并提供完整版本的更新策略。

    --fleet-id <unique fleet identifier> --name "<unique policy name>" --policy-type <target- or rule-based policy> --metric-name <name of metric> --comparison-operator <comparison operator> --threshold <threshold integer value> --evaluation-periods <number of minutes> --scaling-adjustment-type <adjustment type> --scaling-adjustment <adjustment amount>

    例如:

    aws gamelift put-scaling-policy --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --name "Scale up when AGS<50" --policy-type RuleBased --metric-name AvailableGameSessions --comparison-operator LessThanThreshold --threshold 50 --evaluation-periods 10 --scaling-adjustment-type ChangeInCapacity --scaling-adjustment 1

    可复制版本:

    aws gamelift put-scaling-policy --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --name "Scale up when AGS<50" --policy-type RuleBased --metric-name AvailableGameSessions --comparison-operator LessThanThreshold --threshold 50 --evaluation-periods 10 --scaling-adjustment-type ChangeInCapacity --scaling-adjustment 1

使用 AWS CLI 删除基于规则的扩展策略:

  • 打开命令行窗口,并使用 delete-scaling-policy 命令以及队组 ID 和策略名称。

    例如:

    aws gamelift delete-scaling-policy --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --name "Scale up when AGS<50"

    可复制版本:

    aws gamelift delete-scaling-policy --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --name "Scale up when AGS<50"

自动扩展规则的语法

要构建基于规则的扩展策略语句,您必须指定六个变量:

如果 &lt;指标名称&gt; 保持为 &lt;比较运算符&gt; &lt;阈值&gt; 长达 &lt;评估期&gt;,使用 &lt;调整类型&gt; 将队组容量更改为 &lt;调整值&gt;,或者按后者幅度更改。

例如,只要队组的额外容量 (可用于托管资源但当前未使用) 低于处理 50 个新游戏会话所需的容量,此策略语句就会触发扩展事件。

如果 AvailableGameSessions 保持为 less than 50 长达 15 minutes,则使用 ChangeInCapacity10 instances 的幅度更改队组容量。

指标名称

要触发扩展事件,请将自动扩展策略与以下队组特定的指标之一关联。有关更完整的指标说明,请参阅Amazon GameLift 队组指标

  • 激活游戏会话

  • 有效游戏会话

  • 可用的游戏会话

  • 可用游戏会话所占百分比

  • 活动实例

  • 可用的玩家会话

  • 当前玩家会话

  • 空闲实例

  • 空闲实例所占百分比

如果队组包含在游戏会话队列中,则可能使用以下指标:

  • 队列深度(特定于队组)– 最适合将此队组作为可用托管位置的待处理游戏会话请求数。

  • 等待时间(特定于队组)– 特定于队组的等待时间。最早的待处理游戏会话请求已等待执行的时间长度。与队列深度一起,该指标仅仅体现最适合将此队组作为可用托管位置的游戏会话请求数。队组的等待时间等于队列中当前最早请求的时间。

比较运算符

此变量指示 Amazon GameLift 如何将指标数据与阈值进行比较。有效比较运算符包括大于 (>)、小于 (<)、大于或等于 (>=) 或者小于或等于 (<=)。

阈值

当指定的指标值达到或超过阈值时,它将触发扩展事件。根据所选指标,它可能指示玩家会话数、游戏会话数、实例数或玩家会话请求数。此值始终为正整数。

评估期

该指标必须在评估期的完整长度内达到或超过阈值,之后才能触发扩展事件。评估期长度是连续的;如果指标回退到阈值之下,则评估期重新开始。

调整类型和值

这组变量一起使用,用于指定在触发扩展事件时,Amazon GameLift 应该如何调整队组的容量。从三种可能的调整类型进行选择:

  • 容量更改 – 按指定的实例数增加或减少当前容量。将调整值设置为要在队组中增加或删除的实例数。正值表示添加实例,而负值表示删除实例。例如,值为“-10”则将缩减队组的 10 个实例,而不考虑队组的总大小。

  • 容量更改百分比 – 按指定百分比增加或减少当前容量。将调整值设置为您要增加或减少队组容量的百分比。正值表示添加实例,而负值表示删除实例。例如,对于一个具有 50 个实例的队组,“20”的百分比更改将向队组添加十个实例。

  • 确切容量 – 将所需实例数设置为特定的值。将调整值设置为您希望在队组中维护的确切的实例数。

基于规则的自动扩展的提示

以下建议可以帮助您通过基于规则的策略充分利用自动扩展。

使用多个策略

您可以同时让多个自动扩展策略在队组上生效。最常见的场景是:使用一个基于目标的策略管理大多数扩展需求;而使用基于规则的策略来处理边缘情况。不过,对于使用多个策略没有限制。

多个策略相互独立。请记住,无法控制伸缩事件的顺序。例如,如果您有多个策略驱动扩展,那么玩家活动可能会同时触发多个伸缩事件。例如,如果玩家活动同时触发了相应的指标,两个扩展策略的效果可能会很容易地组合。此外,观察彼此触发的策略。例如,如果您创建了将容量设置为超过各自阈值的扩展和缩减策略,就会创建无限循环。

设置最大和最小容量

每个队组都具有最大和最小容量限制。此功能在使用自动扩展时尤为重要。自动扩展从不将容量设置为此范围之外的值。默认情况下,新创建的队组具有最小值 0 和最大值 1。要想让您的自动扩展策略按预期影响容量,您必须增加最大值。

队组容量也受到队组实例类型以及您 AWS 账户上限制的约束。您不能设置超出服务和账户限制的最小值和最大值。

在容量更改后跟踪指标

在更改了容量以响应自动扩展策略之后,Amazon GameLift 将等待十分钟,然后再响应该相同策略的触发器。这种等待允许 Amazon GameLift 有时间添加新实例,启动游戏服务器,连接玩家,以及开始从新实例收集数据。在这段时间内,Amazon GameLift 继续根据指标评估策略并跟踪策略的评估期,该评估期在触发伸缩事件之后重新开始。这意味着,伸缩策略可以在等待时间结束后立即触发另一个伸缩事件。

不同自动扩展策略触发的扩展事件之间没有等待时间。