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_INSTANCEvariable).
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.jsy dejar que el clúster nodejs haga el trabajo.cluster modeel 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 0le 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
clusterochild_processAPI. Dado queclusterusa este último, en realidad está haciendo lo mismo. Hay muchas más costumbresstdiopasando 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_modeinstancia probablemente no pueda escuchar en el mismo puerto debido aEADDRINUSE.cluster_modelata. 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_processinternamente? y su sugerencia es si necesito flexibilidadstdio, ¿tengo que usar el modo Fork?stdiocosa es algo depm2implementación. No se preocupe por esto. Desea usarcluster_modeen producción porque está fortaleciendo su instancia ya que está ejecutando-i [number]instancias en segundo plano. Úselofork_modesi el endurecimiento no es necesario o si desea mejores troncos y cosas así.cluster_modeusa más recursos de su sistema porque está ejecutando-i [number]procesos.cluster_mode, el equilibrio de carga decluster_mode,cluster_modeutiliza 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.