我目前正在研究nodejs应用程序,我遇到了一个小问题。
我的NodeJS应用程序由两部分组成:
我们从其他内部应用程序收到大量API调用。其中一些调用会向网络用户生成通知(让我们对其进行在线聊天)。 因此,如果我们有客户#1000的消息并且他在线(通过Socket.io连接到Web应用程序),我们将通过Socket.io向该客户端发送消息。一切正常。
但是有一个问题。
我们将在NodeJS应用程序之间引入负载均衡器(它是一个应用程序,因此两个部分--API和Web都将在负载均衡器之后)。现在让我们假设我们有这个应用程序的负载均衡器和2台服务器:server1和server2。 因此,一些API调用被发送到server1,其中一些被发送到server2。所以让我们假设我们对server1进行了API调用,这个调用应该向客户端#1000发送一条消息。但是这个客户端与server2有开放连接。
问题是:是否有任何最佳做法或常见解决方案 - 这两个服务器应如何通信?其中一个可能的解决方案是在所有具有nodejs应用程序的服务器之间打开套接字连接,如果我们需要向客户端发送消息 - 只需广播它,这样每个服务器都可以检查客户端此时是否已连接并将消息发送给正确的客户端。 / p>