nodejs TCP服务器的横向比例

我想弄清楚如何水平扩展我的nodejs TCP服务器。

示例服务器:

var socketServer = net.createServer(function (socket) { // Identify this client socket.name = socket.remoteAddress + ":" + socket.remotePort // Put this new client in the list clients.push(socket); sockets[socket.name] = socket; // Handle incoming messages from clients. socket.on('data', function (data) { // Write to a specific user var socketName = "xx.xx.xx.xx:56512"; sockets[socketName].write("Hello!"); } }).listen(8080); 

以下示例将每个新连接存储在一个数组中,以便我们可以在路上向特定用户写入消息。

我想用haproxy作为负载均衡器进行扩展。 但是,我怎么能让我所有的服务器共享相同的连接客户端arrays?

Stickysessions不是一个适合我的解决scheme,因为两个人聊天(两个客户端)可能在不同的服务器上,所以所有的服务器都必须共享相同的连接客户端arrays。

任何想法如何做到这一点?

我有一个想法:

  • 是否有可能在MySQL中存储每个连接?

编辑也许唯一的方法是使用Redis ? 任何想法,如果这将是一个合适的select? 负荷将会非常重

1.使用Redis与您的服务器分享您的会话。

2.写一个login服务器,所有的用户都应该login到login服务器。 login服务器将生成一个会话,并在Redis服务器上共享会话并返回交易服务器的IP和端口,

其次,客户端接收IP和端口,断开login服务器,并连接到事务服务器,

最后,您可以提供多个TCP服务器来处理事务,login服务器将通过IP和端口来平衡负载。 当然,你可以使用haproxy来做到这一点,但我不知道如何configuration它。