В чем разница между разными способами выполнения и разделения кода в nodejs?
Объясните на конкретных примерах, разницу того, что называют "разделением выполнения кода". То есть, когда говорят, что разделив процессы, повысишь быстродействие приложения. Но в моем понимании, разделение ограничивается разделением на ядра процессора. Но в ноде есть разделение на child_process, на какой-то cluster. Как именно разделяет тот или иной способ? в чем разница?
Если Вы отвечаете на этот вопрос, то скорее всего уже хорошо разбираетесь в ноде.
Поэтому у меня просьба, объясните о разделении так, как-будто Вы себе из далекого прошлого
объясняете. У меня вообще никаких знаний, кроме как очень скудного хелпа нет. Целый день читаю
гугл и вроде многое понял, но основное так и осталось непонятом. В ру сегменте нет статей, которые были бы насквозь пропитаны опытом разработки, все что я читал, больше похожи на пересказ и конспектирование скудной документации, на какую-то личную памятку, нежели исчерпывающее руководство.
Существенным ограничением node.js является то что движок JavaScript в любой момент времени может выполнять ровно один скрипт или часть скрипта, если в скрипте используются функции обратного вызова или промисы.
Если на сервере доступно несколько ядер то можно запустить кластер node.js. Проще всего это сделать при помощи PM2 см. pm2.keymetrics.io/docs/usage/cluster-mode При этом практически не придется делать изменения в приложении. За одним исключением. Нельзя использовать глобальное состояние (например значение переменных которые определены на уровне модуля, подписку на сообщения и т.п.) т.к. это состояние будет у каждого экземпляра свое. При необходимости для синхронизации глобального состояния дополнительно приходится использовать как правило redis-сервер.