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

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

  • Upload
    geekslab

  • View
    1.413

  • Download
    12

Embed Size (px)

Citation preview

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

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

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

Немного  о  себе        Виталий  Лебедев  •  Родом  из  Херсона  •  Учился  в  Одессе  и  Севастополе  

•  Работаю  в  DataArt  2.5  года  

•  Текущая  позиция  –  PHP  Developer  

•  Текущий  проект  на  Node.js  

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

Асинхронность  VS  параллелизм  

Отделяем  котлеты  от  мух  

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

Асинхронность  

•  Асинхронный  не  означает  параллельный  •  «Выполняться  асинхронно»  не  означает  «выполняться  одновременно»  

•  Сравнивать  асинхронное  и  параллельное  это  как  сравнивать  горячее  и  синее:  эти  вещи  из  разных  областей  

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

Синхронная  обработка  запроса  

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

Асинхронная  обработка  запроса  

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

Node.js  event  loop  

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

Параллелизм  

•  «Выполняться  параллельно»  означает  «выполняться  одновременно»  

•  В  современном  мире  параллелизм  обретает  все  большую  популярность,  т.к.  процессорные  мощности  начали  расти  в  сторону  увеличения  количества  ядер,  а  не  частот  

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

Параллельная    и  асинхронная  обработка  

запроса  

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

Параллелизм  в  node.js  

Child  Process  &  Cluster  

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

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)  

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

Пример  Child  Process:  spawn  

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

Пример  Child  Process:  spawn  

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

Пример  Child  Process:  fork  

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

Пример  Child  Process:  fork  

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

Cluster  

•  Позволяет  запускать  кластер  процессов  Node.js,  и  т.  о.  использовать  преимущества  многоядерных  систем  

•  Все  процессы  могут  использовать  общие  порты  для  подключения  

•  Для  создания  дочерних  процессов  использует  child_process  

•   Stability  –  1  (Experimental)  

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

Cluster:  пример  

Page 18: Асинхронность и параллелизм в Node.js
Page 19: Асинхронность и параллелизм в Node.js
Page 20: Асинхронность и параллелизм в 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%  скидки  по  ссылке!)