NodeJS Cluster, полезные варианты использования? - PullRequest
1 голос
/ 17 марта 2019

Я изучаю варианты использования, чтобы представить кластерные вычисления с nodejs нескольким друзьям.

Моя цель - объяснить несколько реальных случаев кластера nodejs и почему nodejs полезен при создании этих конкретных случаев.

Пока мне действительно нравится один случай:

  • кластеризация веб-сервера (например, сервер API REST) ​​ (причина: балансировка нагрузки)

Я видел примеры выполнения дорогостоящих вычислений, в которых упоминались преимущества выполнения в другом потоке / процессоре.

Это заставило меня задуматься о том, чтобы рабочие пулы выполняли разные части, напримеробрабатывая только соединение с базой данных, генерируя PDF-файлы и т. п.

Пытаясь понять связи между работником и мастером, я возился с и все еще не уверен:

  • - это кластеры nodejs, которые подходят только для того, чтобы один и тот же процесс мог работать параллельно (документация предлагает это)
  • или делает этоkes имеет смысл иметь работников кластера nodejs, таких как отдельные задачи в пулах.

.. в результате: какие варианты использования на самом деле являются реальными случаями использования с nodejs?

Надеемся, что это понятно.Мнения очень приветствуются.

1 Ответ

1 голос
/ 17 марта 2019

- это кластеры nodejs, которые подходят только для того, чтобы один и тот же процесс мог работать параллельно (документация предлагает это)

В некотором роде.Встроенный кластерный модуль просто порождает дочерние процессы, которые выполняются тем же сценарием, который выполняется.Вы всегда можете просто выполнить дочерние процессы другими способами.

или имеет смысл иметь кластерных работников nodejs, таких как отдельные задачи в пулах

Все, что работает для вас и вашего приложения!Нет смысла следовать соглашению, если у вас есть причина этого не делать.

, что приводит к следующему: какие случаи использования [кластера] действительно реальны с nodejs?

(Я предполагаю, что вы спрашивали о реальных случаях использования кластеров.)

Для большинства приложений (тех, которые я видел и использую в любом случае), можно полностью насытить / использовать ресурсы системы.с одним процессом Node.js.То, что ваш код является однопоточным, не означает, что весь нативный код, к которому вы обращаетесь, является.Многие люди используют модуль кластера, потому что считают, что это единственный способ полностью использовать все процессоры на хосте.Это из-за распространенного недопонимания документации Node.js.

Я уверен, что есть некоторые приложения, которые просто связаны с CPU в этом единственном потоке для запуска JavaScript, но для многих I / O являетсянамного больший блокатор.

...