跳到主要内容

房间类游戏网络接入

网络模型

对于需要开房间的游戏,我们通常需要为每个房间分配一个独立的公网地址(IP:Port),玩家匹配成功后会被分配到同一个房间,开局前游戏客户端通过该公网地址连上房间:

下面介绍在 TKE 中,为每个房间分配独立公网地址的方法。

EIP 方案

TKE 支持为 Pod 绑 EIP ,每个 Pod 都会被分配一个独立的公网 IP,房间的公网地址就是 Pod EIP + 房间进程监听的端口号。

配置方法参考 Pod 绑 EIP

CLB 映射方案

安装开源的 tke-extend-network-controller 插件,可实现用 CLB 四层监听器来为每个 Pod 映射公网地址,每个 Pod 占用 CLB 一个端口,Pod 中房间的公网地址就是 Pod 所被绑定的 CLB 实例的公网 IP 或域名及其监听器对应的端口号。

配置方法参考 使用 CLB 为 Pod 分配公网地址映射

方案对比与选型

方案费用资源数量消耗使用限制
EIPIP 资源费用(闲置时才收取) + 网络费用,参考 EIP 计费概述一个 EIP 只能绑定一个 Pod,需消耗较多 EIP 资源EIP 资源比较有限,有申请的数量限制和每日申请的次数限制(参考 EIP 配额限制),如果大规模使用就不太适用
CLB 映射实例费用 + 网络费用,参考 CLB 计费概述一个 CLB 可绑定大量 Pod,消耗的 CLB 实例数量可控CLB 有监听器数量和实例数量的配额限制,主要是监听器数量限制,默认50,意味着单个 CLB 能给 50 个 Pod 映射地址(参考 CLB 通用限制),但这个限制通过提工单是比较容易根据需求调整的,大规模使用也能适用