【问题标题】:NodeJS matchmaking across servers跨服务器的 NodeJS 匹配
【发布时间】:2015-05-10 13:12:08
【问题描述】:

我正在尝试创建一个类似于 QuizUp 的游戏。

从一开始我就考虑了可扩展性(通过 AWS Beanstalk 或多台机器),所以我想以这种方式实现它:
- 带有负载均衡器的 X 服务器
- 使用 Redis + MongoDB 的后端服务器

所有服务器都将连接到同一个后端服务器(带有 Redis/MongoDB 的那个)以设置/获取数据,以便匹配可以跨服务器工作。

场景:
- 用户 1 连接到服务器 A。服务器 A 检查 Redis 以查看是否有用户搜索。因为没有,所以他将用户 1 添加到 search_users Redis 集中。
- 用户 2 连接到服务器 B。服务器 B 检查 Redis 以查看是否有用户搜索。因为他找到了用户 A,所以他向客户端发送回复说他找到了用户 A。

这里的问题是用户 1 是如何得知他被发现的?

一个答案当然是用户 1 定期检查是否有人找到他。
另一个答案是匹配是通过 sockets.io 完成的(我现在通过 HTTP 进行),如果用户在同一台​​服务器上,他们将通过 Socket 得到通知。在这种情况下,可以通知连接到另一台服务器的套接字吗? (服务器 B 通知连接在服务器 A 上的用户 1 的套接字 - 除了打开与该服务器的连接并广播之外)

【问题讨论】:

    标签: node.js mongodb sockets matching


    【解决方案1】:

    使用 socket.io,您只需使用 socket.io-redis 适配器,它可以启用服务器的每个实例,但使用相同的 redis。使用 1 个 redis 很重要,这样每个服务器都订阅一个 redis。

    【讨论】:

      猜你喜欢
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2018-04-01
      相关资源
      最近更新 更多