nodejs node hub dockerizing compose node.js docker

hub - Docker contenedores y clusters Node.js



node js dockerizing (2)

Lo que he visto como la mejor solución al usar Docker es mantener la menor cantidad posible de procesos por contenedor ya que los contenedores son livianos; no desea que los procesos intenten utilizar más de una CPU. Por lo tanto, ejecutar un clúster en el contenedor no agregará ningún valor y podría empeorar la latencia.

Aquí https://medium.com/@CodeAndBiscuits/understanding-nodejs-clustering-in-docker-land-64ce2306afef#.9x6j3b8vw Chad Robinson explica la idea en términos generales.

Kubernetes, Rancher, Mesos y otras capas de administración de contenedores manejan el equilibrio de carga. Proporcionan capas de "programación" (moviendo esos segmentos del contenedor Docker alrededor de diferentes CPU y máquinas para obtener un buen uso a través del clúster) y capas de "red" (equilibrio de carga de las solicitudes de entrada a esos contenedores) internamente.

Actualizar

Creo que vale la pena agregar el enlace ¿Por qué se recomienda ejecutar solo un proceso en un contenedor? donde las personas comparten sus ideas y experiencias, pero principalmente de Jon hay algunos puntos interesantes:

Siempre que otorgue una responsabilidad única (proceso único, función o preocupación) a un contenedor: Buena idea Docker denomina a esta "preocupación";)

  • Escale los contenedores horizontalmente es más fácil.
  • Se puede reutilizar en diferentes proyectos.
  • Identificar problemas y solucionar problemas es muy sencillo en comparación con hacerlo en un entorno de aplicación completo. Además, el registro y los informes pueden ser más precisos y detallados.
  • Las actualizaciones / degradaciones se pueden controlar de forma gradual y completa.
  • La seguridad se puede aplicar a recursos específicos y en diferentes niveles.

Tengo un servidor api ejecutando Node.js que estaba usando su módulo de clúster y las pruebas parecían ser bastante buenas. Ahora nuestro departamento de TI quiere pasar a usar contenedores Docker, por lo que estoy contento, pero en realidad nunca lo he usado más que simplemente jugar. Pero pensé que la aplicación Node.js se ejecuta dentro de un solo proceso de Docker, por lo que el módulo de clúster no sería realmente el mejor, ya que el proceso de Docker único puede ser un punto lento de la configuración hasta que la solicitud se divide dentro de ese proceso. por el módulo cluster.

Entonces, ¿realmente es más importante un clúster de contenedores de Docker que se estén ejecutando y que puedan iniciarlos y detenerlos sobre la marcha en lugar de usar el módulo de clúster de Node.js?

Si tengo un grupo de contenedores, ¿el uso del módulo de clúster de Node.js me dará algo? Los puntos finales de api tardan menos de .5 seg. En volver (generalmente un poco menos).

Estoy usando MySQL (creo que es un servidor único, nada más actualmente), por lo que no debería haber ninguna razón para usar una solución de integridad de datos en ese momento.


Tendrá que medir para estar seguro, pero mi corazonada se ejecutaría con el módulo de clúster del nodo valdría la pena. Le conseguiría una mayor utilización de la CPU con la menor cantidad de sobrecarga adicional. No hay contenedores adicionales para gestionar (iniciar, detener, monitorear). Además, los trabajadores del cluster tienen un mecanismo de comunicación eficiente. La evolución más razonable (no omitir pasos) me parece:

  1. 1 contenedor, 1 proceso de nodo
  2. 1 contenedor, varios trabajadores de nodo agrupado
  3. Varios contenedores, cada uno con varios nodos trabajadores.