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?
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
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.
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.