我正在制作聊天应用程序。为了扩展和使用所有核心,我创建了多个服务器,这些服务器正在监听由基础设施提供的相同端口以供收听。每条信息都是in memory
。
但是,有可能让我们说.. A and B
互相聊天,并且process1
和X and Y
中的信息正在聊天并在process2
中有信息。
我的问题是:
A
,则可以转到process2
,其中没有关于A
或B
的信息。 或者它是否依赖于某些事情,如果我使用上面的简单http
消息会发生问题,但如果我使用web-sockets
则不会发生。
我正在使用node.js
,但我认为这是一个与语言无关的问题。
所以,代码就像:
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
http.Server(function(req, res) { ... }).listen(8000);
}
我应该只制作一个listening-process
intelligent load-balancer
,它会像{{1}}那样将消息发送到正确的流程吗?
答案 0 :(得分:0)
是的,流程会竞争每条消息。所以,要解决这个问题:
我可以像在Redis
或memcache
之类的共享数据库中那样从web服务器中获取会话或聊天信息等数据,并从每个Web服务器查询它。
我也可以在mongodb
中存储Web套接字连接。所以,它变得更容易扩展。