Saltar al contenido

Diferencia de modo de clúster y bifurcación en PM2

Luego de buscar en varios repositorios y sitios al terminar hemos dado con la solución que te enseñaremos pronto.

Solución:

La principal diferencia entre fork_mode y cluster_mode es que ordena a pm2 que use la API child_process.fork o la API del clúster.

¿Qué significa esto internamente?

modo bifurcación

toma el fork Modo de desove como proceso básico. Esto permite cambiar la exec_interpreterpara que pueda ejecutar un php o un python servidor con pm2. Sí el exec_interpreter es el “comando” utilizado para iniciar el proceso secundario. Por defecto, pm2 usará node así que eso pm2 start server.js hará algo como:

require('child_process').spawn('node', ['server.js'])

Este modo es muy útil porque permite muchas posibilidades. Por ejemplo, podría lanzar varios servidores en puertos preestablecidos que luego serán balanceados por HAProxy o Nginx.

Modo de clúster

Él cluster solo funcionará con node como su exec_interpreter porque accederá al módulo de clúster de nodejs (por ejemplo: isMaster, fork métodos, etc). Esto es excelente para la administración de procesos de configuración cero porque el proceso se bifurcará automáticamente en múltiples instancias. Por ejemplo pm2 start -i 4 server.js lanzará 4 instancias de server.js y deje que el módulo de clúster maneje el equilibrio de carga.

Node.js es de un solo hilo.

Eso significa que solo 1 núcleo de su CPU Intel de cuatro núcleos puede ejecutar la aplicación de nodo.

Llamó: fork_mode.

lo usamos para desarrollador local.

pm2 start server.js -i 0 lo ayuda a ejecutar 1 subproceso de nodo en cada núcleo de su CPU.

Y equilibrio de carga automático las solicitudes de los apátridas que vienen.

Sobre el mismo puerto.

Lo llamamos: cluster_mode.

Que se usa en aras de desempeño en producción.

También puede optar por hacer esto en un desarrollador local si desea realizar una prueba de estrés en su PC 🙂

La documentación y las fuentes son realmente engañosas aquí.

Al leer sobre esto en las fuentes, las únicas diferencias parecen ser que usan cualquiera de los nodos cluster o child_process API. Ya que cluster usa este último, en realidad estás haciendo lo mismo. Hay mucho más personalizado stdio pasando alrededor pasando posada fork_mode. También cluster solo se puede comunicar a través de cadenas, no de objetos.

Por defecto estás usando fork_mode. Si pasas el -i [number]-opción, vas a entrar cluster_modeque generalmente buscas con pm2.

También fork_mode la instancia probablemente no pueda escuchar en el mismo puerto debido a EADDRINUSE. cluster_mode puede. De esta manera, también puede estructurar su aplicación para que se ejecute en el mismo puerto y se equilibre automáticamente la carga. Debe crear aplicaciones sin estado, por ejemplo, sesiones, dbs.

Puntuaciones y reseñas

Si estás de acuerdo, eres capaz de dejar una sección acerca de qué le añadirías a este post.

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *