2011-06-15 12 views
7

Ejecutar un servidor web en node.js es algo simple de hacer (como lo demuestran sus excelentes ejemplos y documentación) pero me pregunto cómo puede usar completamente los recursos de la CPU de un servidor dedicado?Escalado horizontal de instancias de servidor node.js en una sola máquina

Dado que node.js es de subproceso único, la única forma de aprovechar los múltiples procesadores es mediante procesos múltiples. Por supuesto, solo un proceso puede vincularse a un puerto, así que parece que debería haber un patrón maestro/trabajador en el que el maestro bifurca a los niños, se une al puerto entrante y delega conexiones entrantes (y el trabajo de procesamiento real) a los niños . (¿Quizás a través de un patrón de consumidor hambriento?)

¿Es esta la mejor manera de escalar un servidor web ejecutando node.js? Si es así, ¿hay bibliotecas para simplificar el patrón maestro/trabajador? De lo contrario, ¿qué patrones o configuraciones de implementación se recomiendan para usar mejor todos los recursos de una máquina dedicada?

(¿Es esta una mejor pregunta para ServerFault?)

Respuesta

6

Multi-node es una biblioteca que proporciona el patrón maestro/trabajador.

Si los procesos del servidor no necesitan poder comunicarse entre sí, y usted no está usando Socket.IO, una opción simple sería simplemente iniciar un proceso/núcleo, enlazar a los puertos locales, y usar algo como nginx o HAProxy para cargar el equilibrio entre ellos.

+1

['cluster'] (http://learnboost.github.com/cluster/) también es popular – Raynos

2

Si está usando expreso, que haría uso de clústeres de TJ: http://learnboost.github.com/cluster/

Proporciona equilibrio 'transparente' de la CPU basada carga, lo cual es bueno porque se puede utilizar la aplicación expresa existente, y lo escala a través núcleos relativamente sin dolor.

Cuestiones relacionadas