У меня есть два экспресс-приложения, работающих на разных портах, поскольку мы знаем, что экспресс-приложения работают в одном потоке, поэтому они назначают себе разные ядра?
Модуль кластера копирует экспресс-приложение, заставляя их использовать другое ядро.
Но предположим, если я возьму два или более приложений и соединю их, значит ли это, что я почти создал кластерный модуль?
🤔 А знаете ли вы, что...
JavaScript - это скриптовый язык программирования, разработанный Netscape Communications Corporation.
Два экспресс-приложения, работающие в одном и том же процессе nodejs, будут совместно использовать один поток, который nodejs использует для запуска вашего Javascript. Они также будут использовать одну и ту же очередь событий. Таким образом, если запрос поступает примерно в одно и то же время для каждого экспресс-приложения, то сначала запускается одно, а затем другое получает шанс запуститься. Они не будут работать параллельно на разных ядрах.
Модуль кластера фактически запускает дополнительные процессы nodejs, а затем направляет входящие подключения к кластерным процессам. В этом случае у вас есть полностью отдельные процессы, которые работают независимо друг от друга и могут использовать отдельные ядра.
Два экспресс-приложения, работающие в одном и том же приложении nodejs, не обеспечат многоядерный параллелизм того же типа, что и кластеризация.
I have two express apps running on a different port, as we know express runs on a single thread, so do they assign themselves different cores?
Нет. Nodejs будет иметь один поток, который обслуживает оба приложения Express.
But suppose if I take two or more apps and connect them does that means that I have almost created a cluster module?
Нет. Два или более приложения Express в одном процессе nodejs не создают эквивалент кластеризации. На самом деле, это не дает вам никаких преимуществ по сравнению с тем, что одно и то же количество запросов обслуживается одним приложением Express в вашем процессе nodejs.
Если вы хотите, чтобы два приложения Express имели доступ к своему собственному ядру ЦП, вам следует либо поместить каждое приложение Express в свой собственный процесс nodejs. Затем ОС может выделить отдельное ядро для каждого процесса nodejs.
Кроме того, имейте в виду, что само приложение не выбирает ядро. ОС смотрит, какие потоки в каких процессах ожидают запуска, и назначает ядро. Это назначение может быть даже динамическим (изменение используемого ядра с течением времени). Хотя ОС со временем предпочтет использовать одно и то же ядро для данного процесса (из-за возможности лучшего кэширования), она не обязана использовать только одно и то же ядро.
Управление ядрами ЦП и их назначение управляются ОС на основе запросов конкурирующих процессов.