管理生成别名并分配给它
生成别名是基于生成的管理层,它允许调用 RequestMultiplayerServer
以受控方式分布在多个内部版本上。 这可以提高生成升级的简单性和可靠性,以及下面列出的一些其他方案。 别名通过指定生成 ID 列表以及每个 ID 的权重来实现此目的。 权重表示应转发到相应生成的分配调用的比率。
向后兼容的安全部署
这是生成以生成升级的最常见方案,你在其中更新游戏服务器和零售客户端与这两个服务器兼容。
客户端将引用别名 1,该别名具有以下配置:
- 内部版本 1:权重 = 1
创建生成 2 后,别名 1 将更改为:
- 内部版本 1:权重 = 8
- 内部版本 2:权重 = 2
你可以逐渐更改权重,直到生成 2 完成所有新的服务器请求。 此时,内部版本 1 的权重为 0,可以从别名中删除。
别名的典型用例是将其关联到客户端兼容性版本和游戏模式。 例如“DeathMatch 客户端 2.2 零售”。使用别名可以管理此更高级别的抽象,同时持续更新支持此体验的生成。 如有必要,别名还使你能够更轻松地回滚生成。
不向后兼容的部署
在这种情况下,你希望在更新游戏客户端的同时更新游戏服务器,因为当前的游戏客户端与旧的服务器版本不兼容。 从一个生成转换到另一个生成将按如下所示完成:
旧客户端将引用别名 1,这将具有以下内容:
- 内部版本 1:权重 = 1
创建生成 2 后,新客户端将引用别名 2,这将具有以下内容:
- 内部版本 2:权重 = 1
在此方案中,别名与生成类似,不使用其多路复用功能。
向后兼容的爆炸式部署
这类似于生成升级方案的向后兼容生成,但需求行为出现更突然的切换。 从一个生成转换到另一个生成将按如下所示完成:
客户端将引用别名 1,这将具有以下内容:
- 内部版本 1:权重 = 1
创建生成 2 后,别名 1 将更改为:
- 内部版本 1:权重 = 0
- 内部版本 2:权重 = 1
测试向后兼容的部署
如果要更新游戏服务器,并且客户端版本与这两个服务器兼容,但你希望在为所有玩家大规模部署第二个版本之前测试第二个版本。 测试和从一个生成转换到另一个版本可以执行以下操作:
客户端将引用别名 1,这将具有以下内容:
- 内部版本 1:权重 = 1
创建生成 2 后。 测试客户端将引用别名 2,这将具有以下内容:
- 内部版本 2:权重 = 1
验证生成 2 后。 别名 1 将更改为:
- 内部版本 1:权重 = 8
- 内部版本 2:权重 = 2
逐渐生成 2 将加权更多并占用所有流量。
回退到其他生成和区域
别名允许跨多个生成进行回退,从而使多人游戏服务器部署更具复原能力。 例如,假定面向生成别名的分配请求将 EastUS 排为区域#1,将美国西部列为区域#2。 此生成别名为两个内部版本(内部版本 1 和内部版本 2)提供类似的权重。
假定为给定的分配选择了生成 1。
- 已尝试在美国东部分配内部版本 1。
- 如果#1失败,则会尝试在美国东部分配内部版本 2。
- 如果#2失败,则尝试在 WestUS 中分配内部版本 1。
- 如果#3失败,则尝试在 WestUs 中分配内部版本 2。
特别是当你从一个内部版本逐渐升级到另一个版本时,此回退行为会得到优化,以便玩家获得最低延迟服务器,即使其中一个版本遇到问题。
使用 PlayFab REST API 管理生成别名
注意
现在可以在 Game Manager 中管理生成别名。 若要开始使用,请参阅 生成概述页
使用 API 创建生成别名。
API:
POST https://titleId.playfabapi.com/MultiplayerServer/CreateBuildAlias
示例正文:
{ "AliasName":"TestingAlias", "BuildSelectionCriteria": [{ "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"} }] }
示例响应:
{ "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6", "AliasName":"TestingAlias", "BuildSelectionCriteria": [{ "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"} }] }
生成别名 ID 作为响应的一部分提供。
更新生成别名的任何参数。
API:
POST https://titleId.playfabapi.com/MultiplayerServer/UpdateBuildAlias
示例正文:
{ "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6", "AliasName":"TestingAliasRenamed", "BuildSelectionCriteria": [{ "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1", "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"} }] }
示例响应:
{ "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6", "AliasName":"TestingAliasRenamed", "BuildSelectionCriteria": [{ "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1", "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"} }] }
删除生成别名。
API:
POST https://titleId.playfabapi.com/MultiplayerServer/DeleteBuildAlias
示例正文:
{ "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6" }
列出生成别名。
API:
GET https://titleId.playfabapi.com/MultiplayerServer/ListBuildAliases
示例响应:
[{ "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6", "AliasName":"TestingAliasRenamed", "BuildSelectionCriteria": [{ "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1", "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"} }] }]
使用生成别名分配
若要使用生成别名进行分配,只需在 RequestMultiplayerServer
调用中指定生成别名 ID。
API:
POST https://titleId.playfabapi.com/MultiplayerServer/RequestMultiplayerServer
示例正文:
{
"SessionId":"6a07440c-7bcc-4e23-8b81-4934543ff966",
"PreferredRegions":["SouthCentralUs"],
"BuildAliasParams":
{"AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6"}
}