1
TCP
프로토콜이 단일 포트에서 몇 개의 연결을 열 수 있는지 제한을 극복하려고합니다. 그래서 내가 예를 들어 다른 포트에서 실행 내 서버의 여러 인스턴스를 만들 수있는 방법을 생각 : 1 (3001)socket.io router, multiple instances 중 하나에 할당
- 인스턴스를
server_i1.js
- 예 2 (3002)
server_i2.js
- 예 3 (3003)
server_i3.js
많은 사람들이 연결 방법을 확인 할 - 예 4 (3004)
server_i4.js
그럼 내가 한 추가 파일 server_route.js
을 가질 수 이온은 각 인스턴스마다 설정되고 사용자를 덜 채워진 인스턴스로 전달합니다. 나는 클러스터를 사용하여 무언가를 만들려고했으나 같은 포트에서 새로운 프로세스를 만드는 것으로 보인다. 모든 사용자가 예를 들어 http://exmaple.com:3000
에 연결 한 다음 네 개의 가능한 포트 중 하나 ([3001, 3002, 3003, 3004]
) 중 하나로 전달하는 방법은 무엇입니까?
현재 서버 접근 방식 :
var cluster = require('cluster');
var numCPUs = require('os').cpus().length;
if(cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
var http = require('http'),
_io = require('socket.io'),
server = http.createServer();
server.listen('3000', 'example.com');
var io = _io.listen(server);
var connections = {},
msg_sent = 0;
io.on('connection', function(socket) {
connections[socket.id] = new Date().getTime();
socket.on('client-request', function(msg) {
msg_sent++;
});
socket.on('disconnect', function() {
delete connections[socket.id];
});
});
setInterval(function() {
console.log('Active connections: ', Object.keys(connections).length, 'Messages sent: ', msg_sent);
}, 1000);
}
할 것이 유일한 문제는 서버간에 부하를 분산하는 방법으로 할 것, 정말 좋은 생각, 당신은 어떤 생각을해야합니까 어떻게? – Mevia
@mevia thats 라운드 로빈의 것. 연결이 많으면 워크로드가 서버간에 균등하게 분배됩니다 ... –