with started start quickstart node harmony guide docs biblioteca app node.js websocket scalability load-balancing

node.js - started - Escala horizontal de NodeJS



node js quickstart (3)

Node.js es compatible con la escala horizontal de la manera que describe a través del módulo de cluster incorporado.

Con respecto a su segunda pregunta sobre el uso de websockets / socket.io en este entorno, debe usar algo como Redis para almacenar el estado compartido en varias instancias de su aplicación como se describe aquí .

He sido desarrollador de aplicaciones web de ruby ​​/ php durante bastante tiempo y estoy acostumbrado a la idea de la escala horizontal de instancias de servidor para manejar más solicitudes. Escala horizontal: es decir, instancias separadas de una aplicación situada detrás de un equilibrador de carga que no comparte nada y no se conocen entre sí.

La principal pregunta que tengo es que, dado que Node.js y su énfasis en evented-io permite que un solo cuadro ejecute un servidor node.js para manejar ''miles'' de solicitudes simultáneas, se usa el equilibrio de carga / escalado horizontal para escalar las aplicaciones de nodejs ? ¿La ampliación de una aplicación de nodo está limitada a la escala vertical (arrojando más RAM / potencia de procesamiento al problema)?

Mi segunda pregunta tiene que ver con la escala horizontal de node.js y los websockets. He visto bastantes tutoriales de "chat" de Node.js que hacen uso de websockets. (favorito: http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial )

Dado que los websockets mantienen efectivamente abierta una línea de comunicación abierta entre un navegador y un servidor, una arquitectura de escala horizontal típica del mundo de PHP / Ruby provocaría una aplicación de chat como la explicada en el enlace para romperse, ya que las nuevas solicitudes de conexión de websocket serían asignados a diferentes procesos / servidores y no habría un recurso central que rastree todos los clientes conectados?


La funcionalidad del clúster de Node.js está limitada a un único servidor con múltiples procesadores. Principalmente aprovecha la cantidad de procesadores en el servidor. Creo que la pregunta es más sobre el escenario cuando queremos escalar horizontalmente con múltiples servidores con una fachada de Load Balancecer.


Si tiene instancias de node.js distribuidas en varios servidores (escala horizontal), servirá para el mismo propósito, necesita programarlo adecuadamente para admitir este tipo de configuración.