自定义容器缩放实现

Custom Container scaling implementation

我正在制作一个实时多人游戏,我对如何构建后端有一个想法,但我什至不知道它是否可行,更不用说如何构建和部署它了。基本上我想将我的后端作为容器部署到云 运行 但不是通过所有实例通用的数据库同步数据我想在每个实例中本地存储游戏数据并将同一游戏中的玩家连接到同一个实例。本质上,我需要一个自定义负载均衡器和缩放逻辑。我没能找到关于此主题的任何有用的 material,因此非常感谢任何 help/input。

这可以在 Kubernetes 上完成,但我怀疑这是否可以在 Google Cloud 运行 上轻松完成。您的 game-pod 本质上是 有状态 工作负载,不适合 Google 云 运行,但您可以 运行 在 Kubernetes 上作为 StatefulSet.

Essentially I would need a custom load balancer and scaling logic.

是的。为此,您需要使用 UDP/TCP load balancer and you most likely need to deploy than default. This network load balancer will forward traffic to your custom load balancer - probably running as a Deployment.

自定义负载均衡器 - 分片代理

作为自定义负载平衡器,您需要的是 that can forward traffic to correct Game Session Pod and potentially also to scale up to more Game Session Pods. See the answer to 以了解更多信息。

游戏会话应用程序

处理游戏会话的应用程序需要部署为 StatefulSet 以便它们获得 唯一的网络身份 例如game-session-0game-session-1game-session-2 - 这样您的 自定义负载均衡器 可以使用逻辑将流量引导至正确的 Game Session Pod。

I want to store the game data locally in each instance and just connect players in the same game to the same instance.

这是可能的,使用 emptyDir.

类型的卷

GKE 上的游戏服务器示例

有关此类部署的广泛示例,请参阅 Running dedicated game servers in GKE