我正在尝试通过25K +并发连接在视频游戏的用户之间建立实时(私人)聊天。当前,我们运行32个节点,用户可以在其中通过负载均衡器进行连接。我要解决的问题是如何将消息路由到每个用户?
当前,我们正在使用socket.io和socket.io-redis,其中每个websocket都使用其用户ID加入一个会议室,然后将它们应收到的每条消息发送到该会议室。此设计的问题在于,我们正在达到Redis Pubsub的极限,而Socket.io的扩展性不好(socket.io向所有检查用户是否连接的节点发送消息,这是不可行的。) >
我们当前的堆栈由Postgres,Redis和RabbitMQ组成。我一直在考虑这个问题很多,并提出了3种不同的解决方案:
您认为最适合我们的用例的是什么?您还有其他想法吗?
我正在尝试通过25K +并发连接在视频游戏的用户之间建立实时(私人)聊天。当前,我们运行32个节点,用户可以在其中通过负载均衡器进行连接。我是问题...
我找到了一个更好的解决方案:为每个用户创建一个绑定,但是在每个节点上仅使用一个队列,然后将每个消息路由到每个用户。