【发布时间】: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