Node.js +Cluster

macCluster

Durante las últimas semanas, he estado jugando con Node.js, MongoDB y Redis. Con el fin de seguir mejorando mis capacidades en BackEnd, en los últimos días también he estado trasteando con el módulo Cluster de Node.js.  Este módulo realmente mejora la cantidad de carga que Express pueden manejar. Los resultados han sido asombrosos.

El módulo Cluster es bastante fácil de utilizar si estás acostumbrado a trabajar con el Node, pero me gustaría compartir mi experiencia a través de un sencillo tutorial esperando que pueda ser de ayuda a la comunidad.

Vale… pero… ¿Qué hace un Cluster?

Node.js corre en un solo hilo. Aunque es muy rápido en la mayoría de los casos, es inútil no utilizar el resto de procesadores si estos  están disponibles. El módulo Cluster permite crear una pequeña red de procesos separados que pueden compartir los puertos del servidor, con lo que podemos aprovechar toda la potencia de nuestro servidor. Dicho de otra forma, es muy útil para aprovechar las ventajas de los sistemas multi-core, ya que podremos poner en marcha un conjunto de procesos de Node para manejar la carga.

¿Cómo funciona?

Uno de los secretos a voces de node.js es que adopta muchos principios de Unix, llevándolos a su propio terreno. En este caso la creación de procesos es muy similar al modelo de Unix: un sencillo fork() crea una copia del proceso actual. A partir de ese momento el primer proceso se convierte en maestro o master, y la copia en un trabajador o worker. Es similar a cómo funcionan nginx o Apache, y a otros programas multi-proceso Linux.

Untitled drawing Continue…