Upload
geekslab
View
1.413
Download
12
Embed Size (px)
Citation preview
Асинхронность и параллелизм в Node.js
Немного о себе Виталий Лебедев • Родом из Херсона • Учился в Одессе и Севастополе
• Работаю в DataArt 2.5 года
• Текущая позиция – PHP Developer
• Текущий проект на Node.js
Асинхронность VS параллелизм
Отделяем котлеты от мух
Асинхронность
• Асинхронный не означает параллельный • «Выполняться асинхронно» не означает «выполняться одновременно»
• Сравнивать асинхронное и параллельное это как сравнивать горячее и синее: эти вещи из разных областей
Синхронная обработка запроса
Асинхронная обработка запроса
Node.js event loop
Параллелизм
• «Выполняться параллельно» означает «выполняться одновременно»
• В современном мире параллелизм обретает все большую популярность, т.к. процессорные мощности начали расти в сторону увеличения количества ядер, а не частот
Параллельная и асинхронная обработка
запроса
Параллелизм в node.js
Child Process & Cluster
Child Process
• Позволяет создавать дочерние процессы, которые могут выполняться параллельно
• Предоставляет возможность общаться с дочерними процессами (Inter-‐Process Communicaoon, IPC)
• Основные команды: – child_process.spawn(command, [args], [opFons]) – child_process.exec(command, [opFons], callback) – child_process.fork(modulePath, [args], [opFons])
• API Stability – 3 (Stable)
Пример Child Process: spawn
Пример Child Process: spawn
Пример Child Process: fork
Пример Child Process: fork
Cluster
• Позволяет запускать кластер процессов Node.js, и т. о. использовать преимущества многоядерных систем
• Все процессы могут использовать общие порты для подключения
• Для создания дочерних процессов использует child_process
• Stability – 1 (Experimental)
Cluster: пример
Несколько полезных ссылок
• h{p://thatextramile.be/blog/2011/12/node-‐js-‐for-‐dummies/ -‐ статья для тех, кто вообще не знаком, или плохо знаком с node.js, с уклоном в теорию
• h{p://www.nodebeginner.ru/ -‐ ещё одна статья для начинающих, с уклоном в практику
• h{p://stackoverflow.com/quesoons/10773564/which-‐would-‐be-‐be{er-‐for-‐concurrent-‐tasks-‐on-‐node-‐js-‐fibers-‐web-‐workers-‐or-‐t -‐ очень хорошее объяснение параллелизма вообще и в node.js в частности
• h{p://blog.argteam.com/coding/hardening-‐nodejs-‐producoon-‐process-‐supervisor/ -‐ пример использования child_process из реальной жизни
• h{p://nodejs.org/api/index.html -‐ RTFM • h{ps://www.udemy.com/learn-‐nodejs-‐by-‐example/?
couponCode=twi{er75 – курс по Node.js (75% скидки по ссылке!)