Comecei a mexer no servidor HTTP Node.js. e gosto muito de escrever Javascript no servidor, mas algo está me impedindo de começar a usar o Node.js. para meu aplicativo da web.
Entendo todo o conceito de E / S assíncrona, mas estou um pouco preocupado com os casos extremos em que o código processual consome muita CPU, como manipulação de imagem ou classificação de grandes conjuntos de dados.
Pelo que entendi, o servidor será muito rápido para solicitações simples de páginas da web, como exibir uma lista de usuários ou exibir uma postagem no blog. No entanto, se eu quiser escrever um código muito intensivo da CPU (no back-end do administrador, por exemplo) que gere gráficos ou redimensione milhares de imagens, a solicitação será muito lenta (alguns segundos). Como esse código não é assíncrono, todas as solicitações que chegam ao servidor durante esses poucos segundos serão bloqueadas até que minha solicitação lenta seja concluída.
Uma sugestão foi usar Web Workers para tarefas intensivas da CPU. No entanto, receio que os funcionários da Web tornem difícil escrever código limpo, pois ele funciona incluindo um arquivo JS separado. E se o código intensivo da CPU estiver localizado no método de um objeto? É meio ruim escrever um arquivo JS para cada método que consome muita CPU.
Outra sugestão foi gerar um processo filho, mas isso torna o código ainda menos sustentável.
Alguma sugestão para superar esse obstáculo (percebido)? Como você escreve um código orientado a objeto limpo com o Node.js enquanto garante que tarefas pesadas da CPU sejam executadas de forma assíncrona?