Как я понял, Node js обрабатывает потоки внутри. Таким образом, если требуется HTTP-запрос, и требуется интенсивная операция ввода-вывода, узел создает другой поток, который обрабатывает операцию ввода-вывода, и тем временем продолжает прослушивать входящие HTTP-запросы в своем основном потоке. С другой стороны, в PHP, запущенном на Apache, каждый HTTP-запрос получает свой собственный поток, который обрабатывает его. В общем, в обоих случаях у вас есть 2 потока, верно? Итак, каково увеличение производительности узла по сравнению с Apache?Многопоточность - Узел js эффективности против Apache
1
A
ответ
0
В серверах на основе событий, таких как узел или самые современные серверы Java EE, один (или несколько потоков) по очереди обслуживает работу по 1 потоку для многих других несвязанных клиентских подключений. Как это обмен/сотрудничество управляется, может принимать различные формы (например, couroutines на некоторых языках, тесно управляемые автоматы и обработки продолженных в некоторых серверах), но чистая прибыль является:
- нет переключения контекста, как различные тема, не пружинить к жизни
- нет/мало синхронизации потоков требуется
- гораздо больше вертикальной масштабируемости
Некоторые недостатки являются:
- сложнее разработать для
- рисков того, что некоторое плохой код/расширение может затормозить многие тысячи запросов
NodeJS использует асинхронный/И.О., вы не платите за переключение контекста - можно сказать, что накладные расходы «упакованы». Нити долго живут. –