2015-12-06 7 views
1

Как я понял, Node js обрабатывает потоки внутри. Таким образом, если требуется HTTP-запрос, и требуется интенсивная операция ввода-вывода, узел создает другой поток, который обрабатывает операцию ввода-вывода, и тем временем продолжает прослушивать входящие HTTP-запросы в своем основном потоке. С другой стороны, в PHP, запущенном на Apache, каждый HTTP-запрос получает свой собственный поток, который обрабатывает его. В общем, в обоих случаях у вас есть 2 потока, верно? Итак, каково увеличение производительности узла по сравнению с Apache?Многопоточность - Узел js эффективности против Apache

+1

NodeJS использует асинхронный/И.О., вы не платите за переключение контекста - можно сказать, что накладные расходы «упакованы». Нити долго живут. –

ответ

0

В серверах на основе событий, таких как узел или самые современные серверы Java EE, один (или несколько потоков) по очереди обслуживает работу по 1 потоку для многих других несвязанных клиентских подключений. Как это обмен/сотрудничество управляется, может принимать различные формы (например, couroutines на некоторых языках, тесно управляемые автоматы и обработки продолженных в некоторых серверах), но чистая прибыль является:

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

Некоторые недостатки являются:

  • сложнее разработать для
  • рисков того, что некоторое плохой код/​​расширение может затормозить многие тысячи запросов