Почему я должен использовать node.js в качестве http-сервера?

Я знаю, что node.js есть & что он делает.

Я действительно хочу знать, как это работает как http-сервер?

Сервер, такой как apache, получает запрос, развивает процесс, выделяет память для обработки, обрабатывает запрос & освободите процесс после его завершения. Если мы получаем тысячи HTTP-запросов за раз, то apache ожидает, что очередь процесса выйдет из процесса.

Как node.js с однопоточной средой обрабатывает так много HTTP-запросов. Все входящие запросы получают собственный цикл событий. Все эти циклы событий используют одну и ту же память.

Как использовать node.js для обработки миллионов HTTP-запросов, более масштабируемых, чем использование apache?

1 голос | спросил user121682 28 FebruaryEurope/MoscowbFri, 28 Feb 2014 15:54:56 +0400000000pmFri, 28 Feb 2014 15:54:56 +040014 2014, 15:54:56

2 ответа


3

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

node.js предполагает, что ваш процесс сильно привязан к IO (разумно для веб-сервера с отдельной БД)

это означает, что каждый раз, когда вы ожидаете в базе данных, чтобы вернуть следующий результат, обрабатывается другой запрос

ответил ratchet freak 28 FebruaryEurope/MoscowbFri, 28 Feb 2014 16:15:07 +0400000000pmFri, 28 Feb 2014 16:15:07 +040014 2014, 16:15:07
0

С неблокирующим кодом вы можете выдать запрос для файловой системы или базы данных, вместо этого, вместо того, чтобы ждать ответа, вы продолжаете и обслуживаете другого пользователя, а затем другого. Позже вы возвращаетесь к первому пользователю (чья просьба была отложена), и вы обслуживаете его.

В общем, это примерно так:

user1 делает запрос -> Узел выдает вызов файловой системе или базе данных.
user2 делает запрос -> Узел немедленно запрашивает запрос, так как нет ожидающего вызова.
user3 делает запрос -> Узел немедленно запрашивает запрос, так как нет ожидающего вызова.
                         вызов в файловую систему или базу данных завершен, а Node служит пользователю1.
ответил Ibrahim 28 MaramFri, 28 Mar 2014 10:22:54 +04002014-03-28T10:22:54+04:0010 2014, 10:22:54

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132