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它。
- Nodejs总是不能完全捕获subprocess的stdout数据,除非subprocessfllush(stdout)
- 部署到Heroku时使用本地或私有NPM模块
- 在node.js中提交一个recursion函数
- 将单选button响应parsing为数组(Express.js)
- Node.js NTLM HTTP Authentication,如何处理这3种types
- 如何评估一个JavaScriptstring,并从中调用函数(无窗口)
- 在NPM中包含依赖于package.json
- 为什么使用supertest代替expressJS的unit testing?
- 使用像redistogo.com这样的服务的优点和缺点?