Алгоритми диспетчеризації подій в Node.js.

No Thumbnail Available

Date

2021

Journal Title

Journal ISSN

Volume Title

Publisher

СНУ ім. В. Даля

Abstract

У традиційній клієнт-серверній архітектурі один потік не може обробляти кілька запитів одночасно через блокуючі операції введення-виведення. Операції роботи з мережею, а також читання і запису на диск занадто повільні в порівнянні зі швидкістю виконання інструкцій процесором комп'ютера. Тому диспетчер програм Node.js використовує орієнтовану на події модель і неблокуючу архітектуру введення-виведення, що робить його легким і ефективним за рахунок наступного: головний потік не блокується операціями введення-виведення; сервер під час операцій введення-виведення продовжує обслуговувати інші запити; сервер розробляється як набір асинхронних програм, керованих подіями, і не обов'язково потокобезпечних. Цикл обробки подій, який є центральною частиною диспетчера Node.js, реалізується відповідно до звичайного однопотокового підходу до асинхронного введення-виведення. Коли циклу обробки подій, що працює в основному потоці додатка, потрібно виконати операцію введення-виведення, для її асинхронного виконання він використовує інший потік з пулу потоків, а коли виконання операції завершується, функція зворотного виклику (колбек) ставиться в чергу подій для послідовної обробки основним потоком. Функції з черги подій (колбеки) виконуються тільки після того, як стек викликів основного потоку буде повністю очищений. Тільки після цього функції з черги подій поміщаються в стек викликів основного потоку для виконання. Якщо в стеку викликів основного потоку в даний момент знаходиться хоча б один елемент, то колбеки в стек викликів потоку потрапити не можуть. Якраз саме через це виклик функції по таймауту часто буває неточним за часом, оскільки функція не може потрапити з черги подій в стек потоку, поки в ньому виконується якась інша функція. Платформа Node.js знаходиться в фазі швидкого зростання, і багато хто розглядає її як переконливу альтернативу традиційним архітектурам веб-додатків.

Description

Keywords

веб-сервіс, Node.js, API, події, обробники подій, диспетчеризація, демультиплексор, движок V8

Citation

Щербаков Є. В., Щербакова М. Є. Алгоритми диспетчеризації подій в Node.js. Наукові вісті Далівського університету. 2021. №20.