# 它们如何工作

关于会话有三点关键要掌握：如何 `容量` 管理一个部署、如何创建和管理用于托管会话的部署，以及如何为每个会话请求选择最合适的部署。

### 管理容量：理解部署中的会话

管理部署容量取决于基于您的具体需求做出的核心决策。我们在服务器端管理插槽（sockets），并将其填充到某个限制。您只需指明您希望这些 `插槽` 如何被填满。

我们提供两种选项： `基于席位的` 会话或 `基于比赛的` 会话。我们将帮助您了解这些会话类型之间的区别，并选择最适合您部署容量管理需求的类型。

### **基于席位的会话**

使用 `基于席位的` 会话，您部署中的每个会话玩家都占用一个插槽空间。例如，如果您的部署有十个插槽，一个单人玩家和一个四人队伍将占用五个插槽。如果您删除该四人队伍的会话，已使用的插槽数量将变为一个。

### **基于比赛的会话**

使用 `基于比赛的` 会话中，您部署的每个会话无论有多少玩家都只占用一个插槽空间。例如，如果您的部署有五个插槽，您可以有三场各十人的比赛，这将算作五个插槽中的三个，即使有 30 名玩家连接。如果您删除这三场十人比赛中的一些，会话被删除后已使用的插槽数量将变为二（示例中假设删除后剩余两个会话）。

{% hint style="success" %}
如果您的游戏服务器有较高的资源开销需求，这种类型非常有用。例如，您可能需要 2 个 vCPU 和 4 GB 内存来加载多个资源，但一旦资源加载完成，服务器可以在同一实例上处理多场比赛。这种方法从长远看可以为您节省大量成本，因为您不需要为每场比赛都配置 2 个 vCPU 和 4 GB 内存，而是可以将成本分摊到同一部署上的多个比赛会话中。
{% endhint %}

在这两种情况下，当您创建会话请求时，我们将确保根据您选择的会话类型（“基于席位”或“基于比赛”），选择具有足够可用插槽来托管您会话的最佳部署。

#### 为会话创建和管理部署

在上一页中，我们提到可以自动化创建用于托管会话的部署的选项。有两种方式可以为您的会话创建部署。

1. **自定义后端系统**：您可以在后端创建一个系统，根据需要为您的会话创建部署。如果您有特定要求或需要对部署过程有更多控制，这种方法可能更适合。
2. **自动部署选项**：或者，您可以在您的应用版本中激活 `autodeploy` 选项。这将自动化为您的会话创建部署的流程，使其更方便、更简洁。每次您请求会话时，如果没有可用的部署，系统会在几秒钟内自动启动一个新的部署，然后将您的会话链接到该部署。这确保了即使在请求时没有现有部署可用，您的会话也能及时得到托管。

{% hint style="info" %}
该选项非常强大，因为它使您能够在玩家需要的地理位置快速部署游戏服务器。激活后，它会在多个地点分配负载并随时间进行平衡，将玩家聚集在最受欢迎的服务器上，并自动关闭最不受欢迎的服务器（见下一节）。

通过自动管理基础设施，您可以在长期节省大量资金而无需任何人工干预。这是一个完全自动化的游戏服务器基础设施，可帮助您优化使用并降低成本。
{% endhint %}

{% hint style="warning" %}
在使用 `autodeploy` 选项时，如果没有可用部署且多个会话同时被请求，系统将为每个会话创建一个新的部署。

这是因为所有会话都会检查可用部署，而在那个短时间内，对所有会话来说答案都是否定的。因此， `autodeploy` 选项会启动多个部署。
{% endhint %}

{% hint style="info" %}
管理会话部署还有第三种方式，即通过 [舰队](https://docs.edgegap.com/zh/docs/fleet)。然而，为了让本文件保持简洁，我们在此不会详细讨论该主题。您可以参考专门的 [舰队](https://docs.edgegap.com/zh/docs/fleet) 部分以获取有关此主题的所有必要信息。
{% endhint %}

### 为会话请求选择最佳部署

有两种主要方式来确定哪个部署将托管您的会话。

1. **手动分配**：在这种方法中，您的后端将了解可用部署，并选择一个特定部署来托管您的会话。这使您可以完全控制部署选择过程。

{% hint style="success" %}
如果您有一个大厅系统，让玩家选择他们想加入的服务器，这会特别有用。插槽（容量）系统可用于显示每个服务器可用的空间大小。
{% endhint %}

2. **Edgegap 专利决策系统**：或者，您可以让 Edgegap 的决策系统根据玩家的遥测数据选择最佳部署。该系统利用先进的算法和数据分析来动态确定托管您会话的最优部署位置。

这两种方法都是有效的，可根据您的具体需求和要求进行选择。

如果您选择第二种选项，我们在为您的会话选择潜在部署时，会优先考虑将玩家聚集在一定地理范围内，而不是仅依据遥测，因为与他人一起玩通常比单独玩更有趣。这在 MMO 游戏中尤其重要，多台玩家数量很少的服务器往往是不理想的，这是我们所持有的观点。

如果在范围内未找到合适的部署，我们将进行完整的遥测请求以选择创建部署并托管您会话的最佳位置。建议激活 `autodeploy` 选项以避免由于没有可用部署而导致会话失败。

### **实际用例示例**

我们用一个示例来说明。假设有三个没有会话的部署，位于纽约、华盛顿和芝加哥。我们还有一个有活动会话的部署（带绿色圆圈的服务器），这意味着有玩家可以一起玩。现在，假设有两名玩家想要开始一个新会话。

乍一看，将会话托管在纽约部署似乎合理，因为它靠近其中一名玩家。然而，我们优先考虑将玩家聚集在一起以避免创建大多空置的服务器。因此，如果有另一个部署（如华盛顿）在地理上对两名玩家都适中，我们将改为在那里托管会话。

<figure><img src="https://3334189208-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsR0dHSFv9ymoC0DO5G8J%2Fuploads%2Fgit-blob-76c26dd681c815b691460616dd4a863415c32ca0%2Fworldmap-session.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
有多种方法可以微调部署选择。一种简单且常用的方法是在您的会话请求中至少指定大洲。此外，在另一节中，我们将介绍 [选择器](https://docs.edgegap.com/zh/docs/session/selectors)，您可以使用标签系统来筛选部署。
{% endhint %}
