Node.js o servlets? [cerrado]

10

He escuchado mucho y leído sobre el lenguaje del lado del servidor Javascript, es decir, Node.js, y vi muchas comparaciones a favor de Node.

No entiendo qué lo hace mejor o más rápido, ni cómo se relaciona con algo tan maduro como los Servlets de Java.

Pero los Servlets están construidos sobre un lenguaje de programación multiproceso en lugar de Node.js. Entonces, ¿cómo puede node.js ser más rápido?

Si se supone que 1000K usuarios buscan registros de una base de datos, entonces Node.js debería ser más lento que Servlets.

Además, ¿los servlets no tienen mejor seguridad en comparación con Node.js?

log N
fuente
Tanto los procesos como los subprocesos se pueden usar para escalar cualquier aplicación para la utilización de múltiples núcleos. No necesitas los dos.
Raynos
@Raynos ¿No se puede enhebrar la funcionalidad C vinculada? Simplemente asumí el papel de JS como mensajero de auto-colas sin bloqueo para entregar cosas a cosas de nivel inferior, pero todavía no he conseguido mis patas en Node todavía.
Erik Reppen

Respuestas:

12

Estás mezclando manzanas y naranjas, más o menos.

Los servlets (o heredados de HttpServlet) le permiten acceder a los parámetros de solicitud HTTP y responder con algo, a través (o encima) de una implementación de servidor HTTP existente.

Aunque usa Javascript como lenguaje, Node.js está en un nivel más bajo que eso. Comienza desde la implementación real del servidor HTTP. Sin embargo, puede continuar haciendo más cosas de alto nivel, como aplicaciones web.

Sobre multihilo, no es necesario. Los servidores Node.js no son más rápidos debido a los subprocesos múltiples, son más rápidos porque no bloquean las solicitudes de E / S, por lo que pueden seguir bombeándolos en la cola, mientras hacen otras cosas. Solo funcionan cuando hay trabajo por hacer, no lo esperan, y eso provoca una mejora importante del rendimiento, como resultó.

En cuanto a las consultas de la base de datos, en realidad se trata más de restricciones en el modelo de base de datos y API que del cliente.

En cuanto a la seguridad, es realmente un tema diferente y, en última instancia, está en manos de cualquier desarrollador, no tanto en la biblioteca.

Ñame Marcovic
fuente
3
Servlet 3 admite IO asíncrono al igual que Node
jiggy
3
Jiggy: hay una gran diferencia entre apoyar algo y ser diseñado desde cero para algo. La asincronía de nodos es la última.
Jack
1
@Yam Marcovic Todavía no entiendo lo que quieres decir con "no bloquean las solicitudes de E / S". Incluso en JEE, un hilo se ejecutaría de forma independiente que no detendría otra solicitud para ser atendida. Como se crea un nuevo hilo por solicitud. ¿Estoy teniendo sentido?
Oliver