SlideShare a Scribd company logo
Асинхронность	
  и	
  параллелизм	
  
в	
  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:	
  пример	
  
Асинхронность и параллелизм в Node.js
Асинхронность и параллелизм в Node.js
Несколько	
  полезных	
  
ссылок	
  
•  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%	
  скидки	
  по	
  ссылке!)	
  

More Related Content

PDF
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
PDF
A.pleshkov
PPTX
Организация надежного резервного копирования веб-проекта. Практика и подводны...
PPTX
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
PPTX
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
PDF
Большая книга рецептов или часто задаваемые вопросы по управлению сложными си...
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
A.pleshkov
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Большая книга рецептов или часто задаваемые вопросы по управлению сложными си...
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)

What's hot (18)

PPTX
Денис Иванов
PDF
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PPTX
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
PDF
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
PPT
непрерывная интеграция шаг к непрерывному деплою родионов игорь
PPTX
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
PDF
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
PDF
Антон Галицын
PDF
Павел Прищепа. Бббыстрый бэкенд на базе друпал
PDF
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
PPTX
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
PPTX
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
PPTX
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
PDF
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
PDF
Javascript-фреймворки:
 должен остаться только один
PDF
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PPTX
Why we did not choose Hadoop
Денис Иванов
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
непрерывная интеграция шаг к непрерывному деплою родионов игорь
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
Zabbix и правильное обнаружение проблем - Алексей Владышев @ RootConf 2015
Антон Галицын
Павел Прищепа. Бббыстрый бэкенд на базе друпал
Быстрый рендеринг с DOM шаблонизаторами / Борис Каплуновский (aviasales.ru)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
Javascript-фреймворки:
 должен остаться только один
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Why we did not choose Hadoop
Ad

Similar to Асинхронность и параллелизм в Node.js (9)

PPT
Node.js (Андрей Костенко)
PPT
ВВЕДЕНИЕ В NODE.JS
PPT
Node.js (RichClient)
PPT
Эффективное программирование на NodeJS
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
PPTX
Григорий Демченко, Асинхронность и неблокирующая синхронизация
PPTX
Asynchrony and coroutines
PPTX
Nikita Galkin "5 production Node.js stories"
PPTX
Асинхронность и сопрограммы
Node.js (Андрей Костенко)
ВВЕДЕНИЕ В NODE.JS
Node.js (RichClient)
Эффективное программирование на NodeJS
Node.js введение в технологию, КПИ #ITmeetingKPI
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Asynchrony and coroutines
Nikita Galkin "5 production Node.js stories"
Асинхронность и сопрограммы
Ad

More from GeeksLab Odessa (20)

PDF
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
PDF
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
PDF
DataScience Lab 2017_Блиц-доклад_Турский Виктор
PDF
DataScience Lab 2017_Обзор методов детекции лиц на изображение
PDF
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
PDF
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
PDF
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
PDF
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
PDF
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
PDF
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
PDF
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
PDF
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
PDF
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
PDF
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
PDF
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
PPTX
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js

Асинхронность и параллелизм в Node.js

  • 2. Немного  о  себе        Виталий  Лебедев   •  Родом  из  Херсона   •  Учился  в  Одессе  и   Севастополе   •  Работаю  в  DataArt   2.5  года   •  Текущая  позиция  –   PHP  Developer   •  Текущий  проект  на   Node.js  
  • 3. Асинхронность  VS  параллелизм   Отделяем  котлеты  от  мух  
  • 4. Асинхронность   •  Асинхронный  не  означает  параллельный   •  «Выполняться  асинхронно»  не  означает   «выполняться  одновременно»   •  Сравнивать  асинхронное  и  параллельное   это  как  сравнивать  горячее  и  синее:  эти   вещи  из  разных  областей  
  • 8. Параллелизм   •  «Выполняться  параллельно»  означает   «выполняться  одновременно»   •  В  современном  мире  параллелизм  обретает   все  большую  популярность,  т.к.   процессорные  мощности  начали  расти  в   сторону  увеличения  количества  ядер,  а  не   частот  
  • 9. Параллельная    и   асинхронная  обработка   запроса  
  • 10. Параллелизм  в  node.js   Child  Process  &  Cluster  
  • 11. 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)  
  • 16. Cluster   •  Позволяет  запускать  кластер  процессов   Node.js,  и  т.  о.  использовать  преимущества   многоядерных  систем   •  Все  процессы  могут  использовать  общие   порты  для  подключения   •  Для  создания  дочерних  процессов   использует  child_process   •   Stability  –  1  (Experimental)  
  • 20. Несколько  полезных   ссылок   •  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%  скидки  по  ссылке!)