Тогда вопрос, каким таким чудесным образом Node это избегает? Если можно на пальцах объясните, пожалуйста,как там все происходит
Синхронно: приняли запрос, обрабатываем: что-то там считаем, нужна инфа с базы/файло? -
Ждем, пока ждем все висит мертвым грузом, получаем, что-то еще считаем, выдаем результат, принимаем следующий запрос.
Асинхронно: приняли запрос, обрабатываем: что-то там считаем, нужна инфа с базы/файло? -
Не ждем, переходим к следующему запросу. Как только нужная инфа пришла - возвращаемся к невыполненному запросу, досчитываем недосчитанное, выдаем результат, переходим к следующему запросу.
Ну асинхронная она, но запрос то должен кто-то делать? Кто его делает?
Пользователь. Веб сервера обслуживают запросы от пользователей. При попытке посмотреть, например, эту страницу, ваш браузер отправляет веб-серверу запрос
HOST: toster.ru
GET: /q/500685
Получает ответ, содержащий html, парсит html, узнает, что ему нужно еще запросить: css-стили, js-скрипты, изображения и аналогично запрашивает их. И так далее...
Ну и вообще, цитата выше, это правда? или просто агитация за ноду?
И правда, и неправда одновременно. Правда в том, что Node действительно так работает. Неправда же заключается в том, что ничто не мешает на Java/C/C#/Go/Python/даже, при большом желании, на php написать приложение, которое будет обрабатывать пользовательские запросы точно так же.