2012-07-01 15 views
7

He creado una aplicación nodejs que funciona bien en un solo núcleo. Esta aplicación utiliza socket.io para la comunicación rápida &.¿Es una buena forma de usar socket.io con clúster en un servidor multinúcleo?

Ahora, quería escalar mi aplicación verticalmente, al permitir que se ejecute en sistema multi-core utilizando el módulo cluster en nodejs.

Todo en mi aplicación almacena datos en Redis, por lo tanto, no hay ningún problema con algunas sesiones de datos básicos &.

Sin embargo, cuando genero múltiples procesos de trabajo utilizando clúster, parece que cada trabajador tiene su propio manejo de socket.

Por ejemplo, supongamos que hay una sala de chat llamada "guest room".

El usuario A y el usuario B se conectan a la sala y se distribuyen a los diferentes procesos de trabajo.

Dado que se encuentran en procesos diferentes y estos procesos no comparten el receptor de sockets, el usuario A y el usuario B no tienen forma de comunicarse entre ellos.

¿Cuál es un buen enfoque para resolver este problema? ¿Soporta socket.io un sistema multi-core?

¿Soporta socket.io solo para un solo núcleo?

+3

Puede ejecutar socket.io con el 'RedisStore' para la ampliación de los procesos/servidores. Ver [esta respuesta previa mía] (http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798) para más profundidad. –

Respuesta

3

Puede usar socket.io de forma normal pero con un almacenamiento redis en segundo plano. También admitirá múltiples instancias en socket.io sin ninguna biblioteca externa. Incluso admite salas en varias instancias.

Enlace a cómo configurar socket.io con Redis: Using Multiples Nodes/Processes with socket.io

+0

Creo que el enlace realmente no apunta a la ubicación que creías que era. – funerr

+0

Creo que también. Déjame editar eso. –

Cuestiones relacionadas