NodeJS跨服务器匹配

时间:2015-03-09 11:33:54

标签: node.js mongodb sockets matching

我正在尝试制作类似于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的套接字 - 除了打开与该服务器的连接并进行广播)

1 个答案:

答案 0 :(得分:0)

对于socket.io,您将仅使用socket.io-redis适配器,该适配器启用服务器的每个实例,但具有相同的Redis。重要的是使用1个Redis,以便每个服务器都订阅一个Redis。