Node.js czy serwlety? [Zamknięte]

10

Dużo słyszałem i czytałem o języku po stronie serwera Javascript, tj. Node.js, i widziałem wiele porównań na korzyść Node.

Nie rozumiem, co czyni go lepszym lub szybszym, ani jak to odnosi się do czegoś tak dojrzałego jak serwlety Java.

Ale serwlety są zbudowane na wielowątkowym języku programowania, w przeciwieństwie do Node.js. Więc w jaki sposób node.js może być szybszy?

Jeśli załóżmy, że 1000 000 użytkowników pyta o rekordy bazy danych, to Node.js nie powinien być wolniejszy niż serwlety.

Czy serwlety również nie mają lepszego bezpieczeństwa w porównaniu do Node.js?

log N
źródło
Zarówno procesy, jak i wątki mogą być używane do skalowania dowolnej aplikacji do wykorzystania w wielu rdzeniach. Nie potrzebujesz obu.
Raynos,
@Raynos Czy nie można również wątkować powiązanej funkcjonalności C? Właśnie wziąłem rolę JS jako nieblokującego się komunikatora w kolejce automatycznej, który przekazuje rzeczy niższym poziomom, ale wciąż nie dostałem łap w Node.
Erik Reppen,

Odpowiedzi:

12

Mieszacie jabłka i pomarańcze.

Serwlety (lub dziedziczenie po HttpServlet) umożliwiają dostęp do parametrów żądań HTTP i odpowiadanie na nie za pomocą istniejącej implementacji serwera HTTP.

Mimo że JavaScript jest językiem, Node.js jest na niższym poziomie. Zaczyna się od faktycznego wdrożenia serwera HTTP. Możesz jednak robić w nim więcej rzeczy na wysokim poziomie, takich jak aplikacje internetowe.

W przypadku wielowątkowości nie jest to konieczne. Serwery Node.js nie są szybsze z powodu wielowątkowości, są szybsze, ponieważ nie blokują żądań We / Wy, więc mogą dalej pompować je w kolejce, wykonując inne czynności. Działają tylko wtedy, gdy trzeba wykonać pracę - nie czekają na to - a to powoduje poważne zwiększenie wydajności, jak się okazało.

Jeśli chodzi o zapytania do bazy danych, tak naprawdę chodzi bardziej o ograniczenia w modelu bazy danych i interfejsie API niż o klienta.

Jeśli chodzi o bezpieczeństwo - to naprawdę inny temat i ostatecznie jest w rękach każdego programisty, nie tyle w bibliotece.

Yam Marcovic
źródło
3
Servlet 3 obsługuje asynch IO tak jak Node
jiggy
3
jiggy - Istnieje duża różnica między wspieraniem czegoś a projektowaniem od podstaw dla czegoś. Asynchronia węzłów jest tym drugim.
Jack
1
@Yam Marcovic Nadal nie rozumiem, co masz na myśli przez „nie blokują żądań We / Wy Nawet w JEE wątek działałby niezależnie, co nie zatrzymałoby kolejnej prośby o doręczenie. Ponieważ na żądanie tworzony jest nowy wątek. Czy mam sens?
Oliver