【发布时间】:2017-10-08 19:09:46
【问题描述】:
我有一个游戏服务器后端服务当前在 Azure 云服务上运行,并希望将其移植到在 Service Fabric 上运行。我遇到了一个我似乎无法解决的问题。
在后端的旧云服务版本中,我们可以使用以下方法直接从游戏客户端连接到特定的工作人员角色:
- 使用本地端口和公共端口范围配置 InstanceInputEndPoint
<InstanceInputEndpoint name="GameServer" protocol="udp" localPort="10000">
<AllocatePublicPortFrom>
<FixedPortRange min="10000" max="10999" />
</AllocatePublicPortFrom>
</InstanceInputEndpoint>
- 获取私有 ip:port 以将套接字绑定到 via:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["GameServer"].IPEndpoint;
- 通过一些额外的配置值来提供云服务的保留 IP 公共 IP 地址,我们还可以计算客户端在分配给游戏服务器实例后应连接到的公共 ip:port。
var publicAddress = IPAddress.Parse(RoleEnvironment.GetConfigurationSettingValue("PublicAddress"));
var publicPort = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["GameServer"].PublicIPEndpoint.Port;
return new IPEndPoint(publicAddress, publicPort);
我目前的问题只是我认为服务结构无法复制此设置,基本上是让我告诉客户端“直接连接到我的游戏服务器服务的这个特定实例”。
【问题讨论】:
-
请问您为什么需要/想要这种行为?我们是在谈论无状态服务还是有状态服务?
标签: .net azure azure-service-fabric