ajax - ¿Cómo puedo escalar socket.io?
node.js comet (2)
No usaría Cluster para escalar Socket.IO. Socket.IO 0.6 está diseñado como un servidor de proceso único, y utiliza conexiones de larga duración o conexiones de sondeo para lograr una conexión en tiempo real entre el servidor y el cliente.
Si coloca Cluster delante de su cliente socket.io, básicamente distribuirá los transportes de sondeo entre diferentes servidores, que no conocen el cliente. Esto resultará en conexiones rotas. Pero también la difusión a todos sus clientes será una molestia, ya que se distribuyen en diferentes servidores y no tiene IPC entre ellos.
Por lo tanto, solo recomendaría utilizar Cluster si solo usa las conexiones Web Socket y Flash Socket y no necesita usar la funcionalidad de transmisión.
Entonces, ¿qué debería hacer?
Podría esperar hasta que se lance socket.io 0.7, que está diseñado desde cero para ser utilizado en múltiples procesos.
O puede usar pub / sub para enviar mensajes entre diferentes servidores.
Digamos que un servidor obtiene 10.000 conexiones simultáneas (a través de socket.io). Eso es mucho, y si no puedo manejarlo más, necesito encender otro servidor.
¿Cómo puedo sincronizar los dos servidores junto con su socket.io?
Puede intentar utilizar, por ejemplo, un módulo de cluster y distribuir la carga a varios núcleos (en caso de que tenga una CPU de varios núcleos). En caso de que esto no sea suficiente, puede intentar usar el proxy inverso para distribuir solicitudes entre múltiples servidores y redis como un almacén de datos de sesión central (si es posible para su escenario).