Node.js Ou servlets? [fechadas]

10

Eu ouvi muito e li sobre a linguagem do lado do servidor Javascript, ou seja, o Node.js, e vi muitas comparações a favor do Node.

Não entendo o que a torna melhor ou mais rápida, ou como ela se relaciona com algo tão maduro quanto os Java Servlets.

Mas os Servlets são criados sobre uma linguagem de programação multithread, em oposição ao Node.js. Então, como o node.js pode ser mais rápido?

Se suponha que os usuários de 1000K consultem os registros de um banco de dados, o Node.js não deve ser mais lento que os Servlets.

Os servlets também não têm melhor segurança em comparação com o Node.js.

log N
fonte
Tanto processos como threads podem ser usados ​​para dimensionar qualquer aplicativo para utilização de vários núcleos. Você não precisa dos dois.
Raynos
@ Raynos A funcionalidade C vinculada também não pode ser encadeada? Eu apenas assumi o papel de JS como mensageiro de filas automáticas sem bloqueio para entregar as coisas para coisas de nível inferior, mas ainda não consegui minhas patas no Node ainda.
Erik Reppen

Respostas:

12

Você está misturando maçãs e laranjas, mais ou menos.

Servlets (ou herdados do HttpServlet) permitem acessar parâmetros de solicitação HTTP e responder com alguma coisa, via (ou em cima de) uma implementação de servidor HTTP existente.

Embora esteja usando o Javascript como idioma, o Node.js está em um nível inferior a esse. Começa com a implementação do servidor HTTP. No entanto, você pode continuar fazendo coisas de alto nível, como aplicativos da web.

Sobre multiencadeamento, não é necessário. Os servidores Node.js. não são mais rápidos por causa do multiencadeamento, são mais rápidos porque não bloqueiam solicitações de E / S, para que possam continuar bombeando-os na fila enquanto fazem outras coisas. Eles só funcionam quando há trabalho a ser feito - eles não esperam por isso - e isso causa um sério aprimoramento de desempenho, como se viu.

Quanto às consultas ao banco de dados, trata-se realmente mais de restrições no modelo e na API do banco de dados do que no cliente.

Quanto à segurança - é realmente um tópico diferente e, em última análise, está nas mãos de qualquer desenvolvedor, não tanto na biblioteca.

Yam Marcovic
fonte
3
Servlet 3 suportes asynch IO como Node
jiggy
3
jiggy - Há uma grande diferença entre apoiar algo e ser projetado desde o início para algo. A assincronia do nó é a última.
Jack
11
@Yam Marcovic Eu ainda não entendo o que você quer dizer com "eles não bloqueiam solicitações de E / S". Mesmo no JEE, o encadeamento seria executado de forma independente, sem impedir que outro pedido fosse atendido. Como um novo encadeamento é criado por solicitação. Estou fazendo sentido?
Oliver