

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

下圖說明使用 Amazon EC2 進行遊戲託管Amazon GameLift Servers FleetIQ時 的角色。其主要目標是找到*最佳的*遊戲伺服器來託管遊戲工作階段，並為玩家提供最佳遊戲體驗。 將*最佳*資源Amazon GameLift Servers FleetIQ定義為能以最低成本提供最高遊戲託管可行性的資源。 會以兩種關鍵方式Amazon GameLift Servers FleetIQ處理此目標：首先在 Auto Scaling 群組中只允許可行的執行個體類型，其次是在群組的可用資源之間有效地放置新的遊戲工作階段。

![\[Amazon GameLift Servers FleetIQ 可與 Amazon EC2 搭配使用\]](http://docs.aws.amazon.com/zh_tw/gameliftservers/latest/fleetiqguide/images/gsg-howitworks-logic.png)


## 將最佳執行個體類型填入 Auto Scaling 群組中
<a name="gsg-howitworks-logic-rebalancing"></a>

Auto Scaling 群組的任務是啟動新執行個體並淘汰舊執行個體、維護託管資源的集合，並擴展以符合您的玩家需求。為此，Auto Scaling 群組依賴於您所需的執行個體類型清單。的任務Amazon GameLift Servers FleetIQ是持續檢查這些所需執行個體類型的可行性，並更新 Auto Scaling 群組的清單。此程序稱為執行個體平衡。它可確保持續重新整理 Auto Scaling 群組中的執行個體，以便隨時只使用目前可行的執行個體類型。

Amazon GameLift Servers FleetIQ 影響 Auto Scaling 群組如何以下列方式選取最佳執行個體類型：
+ **它決定 Spot 和/或隨需執行個體的使用情況。**Amazon GameLift Servers FleetIQ 遊戲伺服器群組設定了平衡策略，這會影響 Auto Scaling 群組如何使用 Spot 和/或隨需執行個體。由於可用性和潛在[中斷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)的波動，以及Amazon GameLift Servers FleetIQ遊戲伺服器託管最小化的限制，Spot 執行個體的成本較低。隨需執行個體的成本更高，但在需要時提供更可靠的可用性。
+ **它限制新執行個體只能在可行的執行個體類型上啟動。**Amazon GameLift Servers FleetIQ 遊戲伺服器群組會維護所需執行個體類型的主清單，執行個體平衡程序會使用查看執行個體類型最近可用性和中斷率的預測演算法，持續評估清單中的每個所需執行個體類型是否有遊戲託管可行性。由於此評估結果，Amazon GameLift Servers FleetIQ會持續更新 Auto Scaling 群組的所需執行個體類型清單，只包含目前可行的執行個體類型。
+ **它會標記為不可存活執行個體類型的現有執行個體。** Amazon GameLift Servers FleetIQ會識別 Auto Scaling 群組中目前不可存活執行個體類型的現有執行個體。這些執行個體會標記為*耗盡*，這表示它們會終止並以新的執行個體取代。對於已開啟遊戲伺服器保護的執行個體，終止會延遲到任何作用中的遊戲工作階段正常結束為止。

當 Auto Scaling 群組啟動和淘汰執行個體時，會維護針對遊戲託管最佳化的集合，即使低成本 Spot 執行個體類型的可用性波動也一樣。平衡活動只會在具有作用中執行個體的遊戲伺服器群組上進行。進一步了解此程序在 [Spot 平衡程序](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會使用下列決策程序，透過可行的低成本 Spot 執行個體來最佳化置放：

1. 可能的話， 會在已託管其他遊戲工作階段的執行個體上Amazon GameLift Servers FleetIQ放置新的遊戲工作階段。透過封裝 （但不超載） 某些執行個體並保持其他執行個體閒置，Auto Scaling 群組可以在不需要閒置執行個體時快速縮減，進而降低託管成本。

1. Amazon GameLift Servers FleetIQ 會忽略標記為*耗盡*的執行個體，也就是無法用於遊戲託管。這些執行個體只會繼續執行，以支援現有的遊戲工作階段。除非沒有其他遊戲伺服器可用，否則它們無法用於新的遊戲工作階段。

1. Amazon GameLift Servers FleetIQ 識別在可行執行個體上執行的所有可用遊戲伺服器。

您可以為遊戲伺服器群組開啟遊戲工作階段保護，以防止 Auto Scaling 群組在主動執行遊戲工作階段的情況下終止執行個體。