

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

# 使用 Spot 機群降低遊戲託管成本
<a name="fleets-spot"></a>

使用Amazon GameLift Servers受管託管託管多玩家遊戲伺服器時，Spot 執行個體可以為隨需執行個體提供經濟實惠的替代方案。Spot 定價模型提供與隨需相同的硬體和效能，但可能節省大量成本 （高達 70-90%)。不過，它們具有限制：當 AWS 需要恢復容量時，可以透過兩分鐘的中斷通知回收這些執行個體。

Amazon GameLift Servers 可降低遊戲伺服器託管中斷的風險。 可Amazon GameLift Servers預測 Spot 執行個體類型中斷的可能性，並避免在任何有風險的執行個體上放置遊戲工作階段。如果發生罕見的中斷，通知可讓您正常結束玩家的遊戲工作階段。

## Amazon GameLift Servers 如何使用 Spot 機群
<a name="spot-fleet-howitworks"></a>

當您為遊戲託管設定 Spot 機群時， Amazon GameLift Servers會持續評估 Spot 機群執行個體類型和位置的遊戲託管可行性。
+ Spot 可行性演算法會依位置分析 Spot 執行個體類型的最新可用性模式和歷史中斷率。
+ 根據此分析， Amazon GameLift Servers會識別 Spot 執行個體類型和位置，這些執行個體類型和位置有不可接受的遊戲工作階段中斷可能性。它會採取下列動作：
  + 它將執行個體類型和位置的組合標記為暫時不可存活。
  + 在放置新的遊戲工作階段時，它會移除任何無法存活的 Spot 機群位置。因此，遊戲工作階段只會放置在 Spot 機群位置，這些位置極有可能不間斷地託管遊戲伺服器。
  + 它會耗盡現有執行個體的 Spot 機群位置，即使 AWS 未回收它們，因此您不需要為無法用於遊戲託管的執行個體付費。如果開啟遊戲工作階段保護，執行個體只會在作用中遊戲工作階段完成後關閉。
+ Amazon GameLift Servers 會持續重新評估 Spot 機群執行個體類型和位置，以取得遊戲託管可行性。當先前不可存活的執行個體類型根據更新的歷史資料再次可行時，您可以再次擴展 Spot 機群，然後Amazon GameLift Servers繼續放置遊戲工作階段。

## 設計考量
<a name="spot-fleet-design"></a>

設計解決方案以使用 Spot 機群時，請考慮下列問題：
+ **評估遊戲工作階段長度** – 遊戲工作階段的平均長度可能會影響 Spot 對您遊戲的運作狀態。遊戲工作階段越短，周轉速度越快，就能根據最新的歷史資料，在可行的執行個體類型上執行遊戲工作階段。較長的遊戲工作階段會繼續在執行個體類型上執行，而不評估最近的可行性資料，隨著時間的推移，中斷風險更高。
+ **評估執行個體類型可用性** – 並非每個機群位置都會將每個執行個體類型提供為 Spot。選擇 Spot 機群的執行個體類型時，請使用Amazon GameLift Servers主控台機群建立工具，協助您在所需的位置尋找 Spot 執行個體類型。使用此工具，您可以選取機群位置，然後檢視這些位置的執行個體類型可用性。
+ **建立多位置 Spot 機群** – 您可以使用多個位置建立 Spot 機群。單一多位置 Spot 機群會將具有相同執行個體類型的執行個體部署至多個 AWS 區域 或 Local Zones。Spot 可行性演算法會根據執行個體類型和位置來評估可行性。如果 Spot 機群位置評估為不可存活，則不會影響機群中的其他位置，這仍然可用於託管遊戲工作階段。
+ **建立具有 Spot 機群多樣性的佇列** – 如果您使用 Spot 機群進行遊戲託管，則需要設定遊戲工作階段置放佇列。對於每個新的遊戲工作階段請求，佇列會尋找可用的遊戲託管資源，並選取最佳的可能選項。使用 Spot 機群時，您想要一個佇列，可以跨位置和執行個體類型不同的多個機群進行搜尋，而且您想要包含至少一個隨需機群做為備份容量。精心設計的多機群佇列提供多樣化的置放選項，可高度彈性地抵禦中斷、減速和中斷。如需為 Spot 設計佇列的其他指導，請參閱 [建置 Spot 執行個體的佇列](spot-tasks.md)。
+ **正常處理中斷** – 設定您的遊戲伺服器，以將發生 Spot 中斷時的玩家影響降至最低。當 AWS 回收 Spot 執行個體時， 會使用伺服器 SDK 回呼函數 ，將終止通知Amazon GameLift Servers傳遞給所有受影響的伺服器程序`onProcessTerminate()`。您的遊戲需要實作此回呼，才能正常結束遊戲工作階段。如需詳細資訊，請參閱[回應伺服器程序關閉通知](gamelift-sdk-server-api.md#gamelift-sdk-server-terminate)。
**注意**  
AWS 會盡一切努力在回收執行個體之前提供通知，但有可能在警告到達之前 AWS 回收 Spot 執行個體。您也應該準備遊戲伺服器來處理非預期的中斷。
+ **為您的備份機群設定自動擴展，以在 Spot 中斷期間維護服務。**目標追蹤自動擴展會維護容量緩衝區，並隨需求自動擴展。透過自動擴展，每當備份機群 (Spot 或隨需） 開始接收更多遊戲工作階段請求時，就會開始增加容量。

  若要在 Spot 機群變得無法存活時快速取代遺失的容量，自訂擴展機制可以使用可用的佇列和機群指標來啟動快速擴展的備份機群。使用 `FirstChoiceOutOfCapacity`、 和 等指標`FirstChoiceNotViable`偵測 Spot 機群何時變得無法存活`PercentAvailableGameSessions`。透過分析最近的`PlacementsStarted`指標資料來估計替代容量需求。擴展備份機群以處理立即需求之後，正常的自動擴展可以接管。
+ **與 整合 FlexMatch** – 如果您的解決方案使用FlexMatch配對建構器，Spot 機群沒有特殊需求。您可以設定配對建構器使用具有 Spot 機群的佇列。 Amazon GameLift Servers會自動排定 Spot 機群和隨需機群的配對置放優先順序，包括在放置新遊戲工作階段時，以及在現有遊戲工作階段中回填空玩家位置時。