He buscado mucho para resolver esta pregunta, pero no obtuve una explicación clara. ¿Existe una sola diferencia en la que la aplicación agrupada se puede escalar horizontalmente y la aplicación bifurcada no?
El sitio público de PM2 explica que el modo Cluster puede hacer estas funciones, pero nadie dice sobre las ventajas del modo Fork (tal vez, puede ser NODE_APP_INSTANCE
variable).
Siento que Cluster podría ser parte de Fork porque parece que Fork se usa en general. Entonces, supongo que Fork significa simplemente 'proceso bifurcado' desde el punto de PM2 y Cluster significa 'proceso bifurcado que se puede escalar'. Entonces, ¿por qué debería usar el modo Fork?
pm2 start -i 30 app.js
y dejar que el clúster nodejs haga el trabajo.cluster mode
el proceso maestro hay un solo punto de falla.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.
Se llama:
fork_mode
.Lo usamos para el desarrollo local .
pm2 start server.js -i 0
le ayuda a ejecutar 1 hilo de nodo en cada núcleo de su CPU.Y equilibre automáticamente la carga de las próximas solicitudes sin estado.
En el mismo puerto .
Lo llamamos:
cluster_mode
.Que se utiliza en aras del rendimiento en la producción .
También puede optar por hacer esto en el desarrollador local si desea realizar una prueba de esfuerzo en su PC :)
fuente
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 nodo
cluster
ochild_process
API. Dado quecluster
usa este último, en realidad está haciendo lo mismo. Hay muchas más costumbresstdio
pasando alrededor de la posadafork_mode
. Ademáscluster
, solo se puede comunicar con cadenas, no objetos.De forma predeterminada, está utilizando
fork_mode
. Si pasa la-i [number]
opción-, ingresarácluster_mode
, a lo que generalmente apunta con w /pm2
.Además, la
fork_mode
instancia probablemente no pueda escuchar en el mismo puerto debido aEADDRINUSE
.cluster_mode
lata. 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. Tienes que crear aplicaciones sin estado, por ejemplo, sesiones, dbs.fuente
cluster
¿El módulo incorporado utilizachild_process
internamente? y su sugerencia es si necesito flexibilidadstdio
, ¿tengo que usar el modo Fork?stdio
cosa es algo depm2
implementación. No se preocupe por esto. Desea usarcluster_mode
en producción porque está fortaleciendo su instancia ya que está ejecutando-i [number]
instancias en segundo plano. Úselofork_mode
si el endurecimiento no es necesario o si desea mejores troncos y cosas así.cluster_mode
usa más recursos de su sistema porque está ejecutando-i [number]
procesos.cluster_mode
, el equilibrio de carga decluster_mode
,cluster_mode
utiliza más recursos ...). Esa es la razón por la que no he votado. ¿Podría explicar ambos casos de uso simples? Cada caso tiene que ser razonable por qué tomó su modo.