【问题标题】:Custom Container scaling implementation自定义容器扩展实现
【发布时间】:2021-04-01 07:38:57
【问题描述】:

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

【问题讨论】:

    标签: docker kubernetes containers load-balancing google-cloud-run


    【解决方案1】:

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

    基本上我需要一个自定义负载均衡器和扩展逻辑。

    是的。为此,您需要使用UDP/TCP load balancer,并且您很可能需要部署custom configuration to allow longer connections 而不是默认值。此网络负载均衡器会将流量转发到您的自定义负载均衡器 - 可能以 Deployment 的形式运行。

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

    作为自定义负载平衡器,您需要的是一个Sharding Proxy,它可以将流量转发到正确的游戏会话 Pod,并可能扩展到更多的游戏会话 Pod。有关更多信息,请参阅Sharded load balancing for stateful services in Kubernetes 的答案。

    游戏会话应用

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

    我想在每个实例中本地存储游戏数据,并将同一游戏中的玩家连接到同一实例。

    这是可能的,请使用 emptyDir 类型的卷。

    GKE 上的游戏服务器示例

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

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多