Porque é o nodo?js escalável?

Nó.js escalável, o que significa isso? Que parte de um nó.o servidor js é escalável. Eu li que é uma tecnologia de simples thread que não é adequada para aplicações que precisariam de um monte de recursos de CPU. Esses fatos não se encaixam com a escalabilidade, então o que significa isso?

Author: vuvu, 2013-06-06

4 answers

O javascript que o nó executa é simples, mas muitas das coisas que você chama em nó - como rede ou arquivo io - executado em linhas de fundo. Veja esta publicação para uma visão geral básica: o nó não é roscado individualmente

Se precisar dos detalhes, deve procurar na libuv, que é a peça 'mágica' que converte os tópicos em loops de eventos: http://nikhilm.github.io/uvbook/basics.html#event-loops

Além disso, se precisares de fazer alguma coisa CPU intensive in node itself, you can easily send this to a child process-see http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options{[3]para mais informações

 15
Author: jedigo, 2013-06-05 21:25:52

Não é que seja mais escalável "per se". É mais que tudo que você faz É (I/O) escalável sem ter que fazer qualquer coisa especial.

I / O é mais seguro e mais fácil de fazer em paralelo, uma vez que tende a não compartilhar dados entre threads de execução. No.js permite que você o faça usando programação de eventos que é simples, elegante e fácil de usar. É um paradigma de programação antigo e provado, usado por anos por GUIs e outros aplicativos intensivos gráficos como jogos, por exemplo.

Na verdade é menos escalável than full fleded languages like c++, c, java, etc.. que pode ser muito melhor com o uso de multithreading completo. Isto permite escalar CPU também, mas também abre uma lata de worms. Para compartilhar CPU, você tem que compartilhar dados ,e essa é outra história (semáforos, bloqueios, etc...)

Podes fazer o mesmo que nodo.js com qualquer um dos idiomas acima, mas não faz parte do idioma em si, então você tem que rolar seu próprio ou usar bibliotecas que o fornecem a você. Dito isto, não é assim tão difícil, mas claro mais difícil do que no nódulo.js.

A maioria dos serviços web, são de ligação IO, por isso nó.js se encaixa bem, e é Ok para a maioria dos casos. Mas uma vez que você começa a usar o trabalho intensivo CPU, os eventos não são atendidos e todas as paradas. Nesse caso, é melhor usar outra língua. Não há uma boa solução no nó para isso. Você pode gerar vários processos, mas então você não será capaz de compartilhar dados entre eles. Sem o compartilhamento de dados, não há maneira de escalar a CPU de forma eficiente, então é melhor não tentar.

Utilizar No.js para IO, e alguma linguagem mais adequada com multithreading adequado para trabalho intensivo de CPU.

 3
Author: FrameGrace, 2014-04-23 01:11:57
É escalável devido à equilibragem de cargas. Essencialmente você pode ter vários trabalhos para o nó processar e ele pode lidar com ele sem nenhum fardo significativo. Isto torna-o escalável.
 2
Author: ApolloSoftware, 2013-06-05 20:43:58

Todas as APIs de nó são escritas de tal forma que suportam callbacks.

Por exemplo, uma função para ler um ficheiro pode começar a ler o ficheiro e devolver o controlo ao ambiente de execução de forma imidificada para que a próxima instrução possa ser executada. Uma vez que o arquivo I/O está completo, ele vai chamar a função de callback ao passar a função callback, o conteúdo do arquivo como parâmetro. Então não há bloqueio ou espera pelo Arquivo I/O Que Faz nó.js altamente escalável, como pode processar elevado número de pedidos sem esperar que qualquer função retorne o resultado. -- Ponto de Tutorial.

 0
Author: clever_bassi, 2015-10-06 14:32:15