¿Cómo trata NodeJS con múltiples solicitudes de muchos usuarios? Si cada usuario inicia 1-3 procesos que escriben pequeños bits de datos en la base de datos, ¿es escalable?

Esto es un poco complicado. El nodo mismo se ejecuta como un solo proceso con un solo bucle de eventos.

Los eventos asincrónicos a menudo son manejados por grupos de subprocesos que se encuentran fuera del proceso del nodo. Por ejemplo, archivo io, db io, red io.

Dichos procesos transfieren el trabajo a subprocesos externos, lo que permite que el bucle del nodo cambie a otra llamada. Cuando se realizan estos procesos externos, envían una devolución de llamada a la cola de trabajo del bucle de eventos.

Entonces, sí, los usuarios ciertamente pueden enviar múltiples trabajos asincrónicos a una base de datos. Hacemos esto a menudo. La capacidad de escalar dicho patrón depende de su capacidad para hacer que los trabajos sean rápidos, idealmente sin bloqueo y efectivamente sin estado. Con suficiente carga, surgirán varios cuellos de botella, desde el tamaño del grupo de subprocesos hasta la carga de la CPU / E / S de la base de datos, la memoria o los problemas de red, y una gran parte del conjunto de habilidades de los buenos ingenieros es saber cómo diagnosticar y resolver estos problemas correctamente, al tomar en cuenta factores de consideración como los niveles de consistencia requeridos, patrones arquitectónicos alternativos, replicación, indexación, etc.

HTH