Что означает однопоточность Node.js?

Допустим Node http сервер запускается на двухпроцессорном сервере с двумя 36 ядерными (72 поточными) intel xeon.
Известно, что Node.js без кластеров работает в одном потоке выполнения следовательно в одном потоке процессора.
Значит ли это, что 143 потока процессоров будут простаивать ? Решают ли кластеры эту проблем ? Мне кажется , что нет , ибо я не представляю как асинхронный event loop может работать на нескольких потоках. Значит в воркеры можно поместить только какие то вычисления. Мне лично кажется именно по этой причине Node не применяется для действительно сложных проектов с огромной аудиторией, и если бы поиск гугл был написан на ноде , им никто не пользовался из за ужасной скорости работы.
  • Вопрос задан
  • 3016 просмотров
Решения вопроса 2
gobananas
@gobananas
finishhim.ru
Значит ли это, что 143 потока процессоров будут простаивать

вообще да

по этой причине Node не применяется для действительно сложных проектов с огромной аудиторией

Серверный JS появился не так давно, на это надо делать скидку. Всё от проекта зависит и требований, V8 довольно хорошо оптимизирован внутри, но если нужна многопоточность из коробки то лучше взять go с его горутинами, другое дело что это не всем надо + мне нужно новый язык изучать а так я знаю JS и могу строить систему пусть и однопоточную но зато на привычном стеке.
Когда C++ появился многоядерные процессоры даже не планировались ещё, способы работы с многопоточностью были добавлены во многие языки намного позже, где-то более удачно, где-то менее.
Ответ написан
@emp1re
Однопоточность не касаеться самого процесора, в процесоре или других просецах могут выполнять N задач.
Event loop это способ передачи задач процесору/процесам/сервисам. Есть очереди со своими правилами и приорететностью, сылки в памяти на задачи которые ждут результа вычисления.
Однопоточность не становиться многопоточностью через кластеризацию. Это всего лиш клон вашего приложения который занимает свободное ядро. Это паралельность.
Node очень просто в скалировании, поднятии и распределении нагрузки. Так что имеено для этого и используют все большие компании.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Значит ли это, что 143 потока процессоров будут простаивать ?

грубо говоря да

Решают ли кластеры эту проблем ?

да, но проще запустить N процессов nodejs через тот же supervisord

Значит в воркеры можно поместить только какие то вычисления.

можно, правда целесообразность зависит от поставленной задачи

Мне лично кажется именно по этой причине Node не применяется для действительно сложных проектов с огромной аудиторией

для чего-то маленького, завязанного на event-loop нода подходит, тот же statsd - вполне production hl решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы