nodejs TCP Server的水平规模



我正在尝试弄清楚如何水平扩展我的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作为负载均衡器来扩展它。但是,如何让我的所有服务器共享相同的连接客户端阵列呢?

粘性会话不是一个适合我的解决方案,因为两个说话的人(两个客户端)可能在不同的服务器上,所以所有服务器都必须以某种方式共享相同的连接客户端阵列。

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

我有一个想法:

  • 是否可以将每个连接存储在 MySQL 中?

编辑也许实际执行此操作的唯一方法是使用 Redis ?任何想法是否是一个合适的选择?负载将非常重

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

2.编写登录服务器,所有用户都应登录登录服务器。首先。登录服务器将生成一个会话,并在 Redis 服务器上共享会话并返回事务服务器 ip 和端口,

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

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

最新更新