我一直在重写我的nodejs
游戏应用来从redis
读取内存,所以如果它变得越来越大,我最终可以扩展它。但是,我停了下来因为我觉得我的方式错了。例如:
Server 1
位于9300端口
Server 2
位于端口9301
现在,让我们说Server 1
的玩家希望向private message
上的玩家发送Server 2
。
Server 2
会向redis发送一个发布信号,Server 1
也会捕获该信号,如果该用户在该服务器上,它会向他们发送通知以及消息。< / p>
1)让Server 2
向Server 1
发送邮件而不发布到redis
2)Server 2
没有跟踪Server 1
拥有的所有已连接客户端,因此无法实现。{1}}除非,我会跟踪每台服务器上的所有连接客户端吗?这将要求客户端在每次访问时连接到多个服务器。
3)我们说我有10台服务器。 Server 5
上的用户想要在Server 1
上向用户发送私信。如果我通过redis
发送了一个发布信号,Servers 4,6,7,8,9,2,3
也将收到该信号......这是不需要的?这是Peer to Peer连接发挥作用的时候吗?或者是缩放所需的额外带宽以及我过度思考所有内容?
答案 0 :(得分:2)
也许您可以通过添加RabbitMQ而不是redis pub / sub来更改应用程序的概念。 RMQ允许更智能的消息路由。
基本上每个用户都可以收听自己的消息:
如果您获得大量用户,那么这个概念仍会达到极限。 RMQ服务器的连接数将增加。在这种情况下,您可以缩放RMQ或更改连接概念: