Node.js es diferente de cualquier otro lenguaje tradicional o de “bloqueo” como Java, PHP, Python e incluso C # (ASP.NET) se ha visto afectado debido a Node.js.
La USP of Node es E / S sin bloqueo o basada en eventos. Para comprender el no bloqueo, debe saber cómo es diferente de E / S en otros idiomas. Más importante aún, el no bloqueo es muy diferente al multihilo o al procesamiento múltiple.
- En el desarrollo completo de la pila, ¿utilizamos JavaScript desde el front-end hasta el back-end (MongoDB)?
- ¿Cuál es la definición correcta del desarrollo back-end y front-end?
- ¿Qué son los términos front-end, back-end, del lado del cliente y todos los demás términos relacionados en el desarrollo y administración web? ¿Qué quieren decir?
- ¿Cuáles son algunas de las ventajas que Node.js tiene sobre otros marcos de back-end?
- ¿Qué se espera que sepas como desarrollador web de Python de back-end?
Un script de nodo es de un solo subproceso, pero la forma en que realiza E / S sin bloqueo le otorga un tremendo poder para escalar en comparación con los lenguajes tradicionales, aunque está escrito en un lenguaje interpretado como JavaScript . En los lenguajes tradicionales, cuando realiza una llamada de E / S como file_getcontents()
en PHP o open(filename,”r”).read()
en Python, todo su proceso se detiene o “bloquea” hasta que esa función regrese con sus datos Ahora, puede decir que unos pocos milisegundos de espera en una sola lectura de disco no deberían molestarlo, ¡pero imagine el sistema de fondo de una aplicación web popular como quora que podría estar haciendo millones de solicitudes de lectura por segundo!
En una configuración tradicional como PHP / Java / ASP.NET, muchos de sus procesos de back-end se atascarán en este modo de E / S de disco, especialmente cuando su servidor está abrumado por las solicitudes. Para resolver este problema de escalado, haga una de estas cosas:
- Agregue más recursos: compra más RAM y / o CPU.
- Introducir colas / middleware: como alternativa, puede introducir un nuevo componente de escala, como un búfer de memoria
memcached
o una cola de mensajes comoRabbitMQ
.
Pero ambas soluciones implican aumentar los recursos, por lo tanto, le cuestan dinero. Solo el nodo le permite escalar a niveles astronómicos a un costo muy económico debido a su modelo de E / S sin bloqueo.
El único problema con el nodo en la actualidad es que su ecosistema puede no estar tan desarrollado como otros. Las bibliotecas y los marcos de nodos (como express.js) no están tan probados en el tiempo como J2EE / Spring de Java o Django de Python.
También existe el caso de que JavaScript es un lenguaje interpretado y Java y C # son compilados y alimentados por un recolector de basura, por lo que estos últimos tienen una ligera ventaja de rendimiento. Sin embargo, dado que el 90% de las aplicaciones en estos días son intensivas en E / S y no intensivas en CPU, el beneficio de velocidad general va a favor de los nodos y JavaScript.
Otras lecturas:
E / S asíncrona – Wikipedia