我正在试图弄清楚如何横向扩展我的nodejs TCP Server。
示例服务器:
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
作为负载均衡器来缩放它。但是,如何让我的所有服务器共享相同的连接客户端阵列?
Stickysessions不是一个对我有用的解决方案,因为两个人说话(两个客户端)可能在不同的服务器上,所以所有服务器都必须共享相同的连接客户端阵列。
任何想法如何做到这一点?
我有一个想法:
修改
也许实际执行此操作的唯一方法是使用Redis
?
任何想法,如果这是一个合适的选择?负载将非常沉重
答案 0 :(得分:1)
1.使用Redis与您的服务器分享您的会话。
2.写入登录服务器,所有用户都应登录Login-Server。 首先,登录服务器将生成一个会话,并在Redis服务器上共享会话并返回事务服务器的ip和端口,
其次,客户端接收ip和端口,断开Login-server,并连接到事务服务器,
最后,您可以提供多个TCP服务器来处理事务,Login-server将通过ip和端口平衡负载。当然,你可以使用haproxy来做到这一点。但我不知道如何配置它。