如何路由到服务中的特定容器-问答-阿里云开发者社区-阿里云

开发者社区> k8s小能手> 正文

如何路由到服务中的特定容器

2018-12-14 14:46:23 2089 1

我有一个基于微服务架构的多人游戏,我试图想象如何水平扩展。它目前在Docker Swarm中精心策划,但我正在考虑转移到Kubernetes。

以下是有关游戏的详细信息:

这是一张带牌的桌面游戏
多个玩家坐在同一张桌子上并互相玩耍
因为它现在有效,我有一个负责所有表的容器。当玩家加入桌子时,他坐下来建立一个连接到该特定容器的websocket连接。所有桌子上的所有玩家都连接到同一个容器。游戏逻辑和游戏事件可以轻松推送给所有客户。

它就是这样的。位于同一个表中的所有客户端都连接到同一个容器,因此可以轻松地来回推送动态游戏数据。

Client 1+

    |         Container A         +Client 3
    |      +---------------+      |
    +--->  |---------------| <----+
           ||   Table 1   ||      |Client 4

Client 2+----> |---------------| <----+

           |---------------|
           ||   Table 2   ||
           |---------------|
           |---------------|
           ||   Table 3   ||
           +---------------+
           |      .        |
           |      .        |
           |      .        |
           +---------------+

但是,当您尝试通过增加容器数量来扩展此问题时,您遇到的问题是位于同一个表上的客户端连接到不同的容器。这意味着必须在位于这些容器之间的数据库中更新每个游戏动作和所有共享动态游戏数据。然而,这变得越来越难以编写和维护:

               Container 1             Container 2

Client 1+ +-------------+ +-------------+ +Client 3

      +----> |-------------|         |-------------| <------+
             ||  Table 1  ||         ||  Table 1  ||
      +----> |-------------|         |-------------| <------+Client 4

Cleint 2+ |-------------| |-------------|

             ||  Table 2  ||         ||  Table 2  ||
             +-------------+         +-------------+
             |             |         |             |
             |             |         |             |
             |             |         |             |
             +----+--------+         +-----------+-+
                  |                              |
                  |                              |
                  |                              |
                  |  +------------------------+  |
                  +> |       Redis DB         | <+
                     +------------------------+

而不是像这样设计组件,以某种方式将必须坐在同一个表上的客户端路由到同一个容器会更加简单。这是为了避免将每个玩家动作和每个公共表更新写入数据库。它看起来像这样:

             Game Service
          +-----------------+

Client 1+ | | + Client 3

    |     |   Container 1   |      |
    +------> +-----------+ <-------+
          |  |-----------|  |

Client 2 +-----> || Table 1 || <-------+ Client 4

          |  |-----------|  |
          |  |-----------|  |
          |  || Table 2 ||  |
          |  |-----------|  |
          |  +-----------+  |
          |                 |
          |   Container 2   |
          |  +-----------+  |
          |  |-----------|  |
          |  || Table 3 ||  |
          |  |-----------|  |
          |  |-----------|  |
          |  || Table 4 ||  |
          |  |-----------|  |
          |  +-----------+  |
          |                 |
          +-----------------+

拥有上述架构将大大降低应用程序的复杂性。问题是必须识别来自不同客户端的连接并将其路由到正确的容器。我还没有办法做到这一点。是否可以使用什么工具路由到服务中的特定容器?

在我的场景中使用的正确方法是什么?此外,如果手动将请求路由到目标容器不是一个可行的选项,那么构建此服务的正确方法是什么?
"

取消 提交回答
全部回答(1)
相关问答

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 961552浏览量 回答数 17

19

回答

[@倚贤][¥20]学习Java后端的疑惑

小江同志 2018-10-24 16:11:21 132209浏览量 回答数 19

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222928浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157032浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333775浏览量 回答数 8

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146738浏览量 回答数 22

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 126024浏览量 回答数 2

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256821浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192303浏览量 回答数 21

22

回答

【精品问答合集】Redis热门问答

李博 bluemind 2019-05-29 16:36:15 126237浏览量 回答数 22
+关注
k8s小能手
整合最优质的专家资源和技术资料,问答解疑
26
文章
620
问答
问答排行榜
最热
最新
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载