Node.js Oder Servlets? [geschlossen]

10

Ich habe viel über die serverseitige Javascript-Sprache, dh Node.js, gehört und gelesen und viele Vergleiche zugunsten von Node gesehen.

Ich verstehe nicht, was es besser oder schneller macht oder wie es sich überhaupt auf etwas bezieht, das so ausgereift ist wie Java-Servlets.

Servlets basieren jedoch auf einer Multithread-Programmiersprache im Gegensatz zu Node.js. Wie kann node.js dann schneller sein?

Wenn 1000 KB Benutzer nach Datenbankeinträgen fragen, sollte Node.js nicht langsamer als Servlets sein.

Haben Servlets im Vergleich zu Node.js keine bessere Sicherheit?

log N.
quelle
Sowohl Prozesse als auch Threads können verwendet werden, um jede Anwendung für die Multi-Core-Nutzung zu skalieren. Du brauchst nicht beides.
Raynos
@ Raynos Kann die gebundene C-Funktionalität nicht auch mit einem Thread versehen werden? Ich habe gerade JS 'Rolle als nicht blockierender Auto-Queuing-Messenger übernommen, um Dinge an untergeordnete Dinge weiterzugeben, aber ich habe meine Pfoten noch nicht auf Node bekommen.
Erik Reppen

Antworten:

12

Sie mischen Äpfel und Orangen.

Mit Servlets (oder dem Erben von HttpServlet) können Sie über eine vorhandene HTTP-Server-Implementierung auf HTTP-Anforderungsparameter zugreifen und mit etwas antworten (oder darüber hinaus).

Obwohl Node.js Javascript als Sprache verwendet, befindet es sich auf einer niedrigeren Ebene. Es beginnt mit der tatsächlichen Implementierung des HTTP-Servers. Sie können jedoch weiterhin mehr hochrangige Aufgaben ausführen, z. B. Webanwendungen.

Über Multithreading ist dies nicht erforderlich. Node.js Server sind aufgrund von Multithreading nicht schneller, sie sind schneller, weil sie E / A-Anforderungen nicht blockieren, sodass sie sie weiterhin in der Warteschlange hochpumpen können, während sie andere Dinge tun. Sie funktionieren nur, wenn noch etwas zu tun ist - sie warten nicht darauf - und das führt, wie sich herausstellte, zu einer ernsthaften Leistungssteigerung.

Bei Datenbankabfragen geht es mehr um Einschränkungen im Datenbankmodell und in der API als um den Client.

Was die Sicherheit betrifft - es ist wirklich ein anderes Thema und liegt letztendlich sowieso in den Händen eines Entwicklers, nicht so sehr in der Bibliothek.

Yam Marcovic
quelle
3
Servlet 3 unterstützt Asynch IO genau wie Node
Jiggy
3
jiggy - Es gibt einen großen Unterschied zwischen dem Unterstützen von etwas und dem Entwerfen von Grund auf für etwas. Die Knotenasynchronität ist die letztere.
Jack
1
@Yam Marcovic Ich verstehe immer noch nicht, was Sie unter "Sie blockieren keine E / A-Anforderungen" verstehen. Selbst in JEE würde ein Thread unabhängig ausgeführt, der nicht verhindern würde, dass eine weitere Anforderung bedient wird. Da wird pro Anfrage ein neuer Thread erstellt. Mache ich Sinn?
Oliver