Дослідження методів і моделей асинхронного оновлення даних для підвищення продуктивності web-систем

Автор: та

Анотація: У роботі були розглянуті існуючи проблеми продуктивності web-систем при асинхронному оновленні даних, а також представлений алгоритм для їх усунення.

Бібліографічний опис статті:

та . Дослідження методів і моделей асинхронного оновлення даних для підвищення продуктивності web-систем//Наука онлайн: Міжнародний електронний науковий журнал - 2019. - №1. - https://nauka-online.com/publications/information-technology/2019/1/doslidzhennya-metodiv-i-modelej-asinhronnogo-onovlennya-danih-dlya-pidvishhennya-produktivnosti-web-sistem/

Стаття опублікована у: : Наука Онлайн No1 январь 2019

Інформаційні технології

УДК 004.021

Фоменко Олександр Андрійович

студент

Харківського національного університету радіоелектроніки

Лєсна Наталя Советівна

кандидат технічних наук,

професор кафедри програмної інженерії

Харківський національний університет радіоелектроніки

ДОСЛІДЖЕННЯ МЕТОДІВ І МОДЕЛЕЙ АСИНХРОННОГО ОНОВЛЕННЯ ДАНИХ ДЛЯ ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ WEB-СИСТЕМ

Анотація. У роботі були розглянуті існуючи проблеми продуктивності webсистем при асинхронному оновленні даних, а також представлений алгоритм для їх усунення.

Ключові слова: продуктивність, web-система, JavaScript, Ajax, WebSocket, асинхронні запити.

Проблема і актуальність дослідження. На даний момент інформаційні сервіси в глобальних телекомунікаціях залучають мільярди користувачів не тільки як джерела інформації, спілкування, розваг, а й як засіб організації електронного бізнесу і управління різними об’єктами. Найбільш поширеним варіантом практичної реалізації подібних сервісів є веб-додатки. Зауважимо, що навколишнє середовище веб-додатків має низку специфічних особливостей. По-перше, взаємодія користувача з сервером здійснюється як сукупність короткочасних часто повторюваних запитів (звернень). По-друге, крім даних і команд користувача по глобальних телекомунікаціях передаються додаткові файли, або дані, які містять в собі елементи дизайну, ілюстрації, медіа-контент, виконуваний код, довідкову інформацію та ін., що породжує безліч паралельних запитів, що значно підвищують завантаження серверів і каналів зв’язку. По-третє, пропускна здатність каналів зв’язку між користувачами і сервером може бути обмежена, що значно збільшує час обслуговування кожного клієнта в порівнянні з часом виконання програмних сценаріїв (часто в кілька десятків разів). По четверте, кількість одночасно працюючих користувачів може бути дуже великою, що вимагає прийняття специфічних заходів при реалізації серверних додатків.

Актуальність дослідження методів та моделей асинхронного оновлення даних зумовлена тим, що для залучення користувачів сайт повинен бути інтерактивним, а користувач міг би отримувати нову інформацію без перезавантаження сторінки. Основною проблемою асинхронного оновлення даних є нездатність швидко опрацьовувати великі обсяги даних.

Огляд поточного стану об’єкта дослідження. В основному, факторами, що обмежують продуктивність веб-систем, є технічні характеристики середовища виконання (обсяг оперативної пам’яті, швидкодія жорстких дисків і процесорів, пропускна здатність каналів зв’язку). Основними ж характеристиками використання реалізованих веб-систем (очікуваними результатами) є кількість одночасно обслуговуваних користувачів і час реакції на їхні запити. Вплив зазначених факторів на продуктивність веб-систем очевидний.

Основним обмежуючим фактором збільшення кількості одночасно обслуговуваних користувачів є обсяг оперативної пам’яті з огляду на те, що всі процеси ділять загальнообмежений адресний простір. Швидкість виконання інших процесів істотно сповільнюється, оскільки для зберігання swap-файлу, який емулює відсутню оперативну пам’ять, використовується жорсткий диск.

Пропускна здатність і час відгуку використовуваного каналу зв’язку істотно впливає на продуктивність веб-систем. Низька пропускна здатність каналу збільшує час доставки сторінок користувачам. Це підвищує кількість процесів, що одночасно знаходяться в оперативній пам’яті і зайнятих передачею вже сформованих даних. Таким чином, процесам, які породжуються запитами нових користувачів, не вистачає оперативної пам’яті і швидкодії процесора для забезпечення нормального (зручного користувачеві) часу відгуку.

Крім того, при низькій швидкодії процесора, малій продуктивності жорстких дисків, малому обсязі оперативної пам’яті і високій складності запитів до БД час обробки цих запитів стає критичним. При великій кількості користувачів може наступити такий момент, коли сумарний час виконання всіх запитів, необхідних для формування динамічних сторінок, перевищить час, виділений на обслуговування, а черга вхідних запитів перевищить обчислювальні можливості сервера БД.

Існує безліч підходів, що дозволяють поліпшити продуктивність серверних додатків. У роботах [1-3] досліджувалися наступні методи:

  • кешування даних на стороні сервера;
  • кешування сторінок на стороні сервера;
  • кешування сторінок на стороні клієнта;
  • попередня генерація вмісту веб-сторінок в статичні файли;
  • використання багаторівневої архітектури FrontEnd-BackEnd;
  • використання веб-сервера, побудованого за FSM (Finite State Machine);
  • стиснення переданих даних засобами HTTP протоколу.

Зауважимо, що в практичній реалізації ці методи можуть бути використані окремо і спільно.

Метою досліджень в роботі [4] була кількісна оцінка продуктивності серверних додатків за наступними критеріями: кількість запитів, оброблюваних сервером, за одну секунду, обсяг трафіку, створюваного тестовими матеріалами, обсяг пам’яті, необхідний для виконання тестових додатків, середній час відгуку веб-сервера.

Мета дослідження. Дана робота містить дослідження існуючих методів та моделей асинхронного оновлення даних з метою їх удосконалення для підвищення продуктивності при роботі з великими обсягами даних. Станом на сьогоднішній час асинхронне оновлення даних активно застосовується у розробці сайтів з новинами, а також у соціальних мережах. Найчастіше асинхронне оновлення даних використовують для відображення останніх новин без перезавантаження сторінок, а також для відображення останніх публікацій та для спілкування між користувачами у соціальних мережах. Отже основною зоною відповідальності асинхронних запитів є отримання невеликого обсягу інформації та відображення його користувачу без перезавантаження сторінки.

Методи, моделі, технології асинхронного оновлення даних. До недавнього часу вся робота в Web будувалася за принципом повної заміни поточного документа. При активації гіпертекстового посилання або форми, браузер передавав запит до серверу, який повертав відповідь у вигляді HTML-документа. Ситуація змінилася з появою об’єкта XMLHttpRequest, доступного з JavaScript-сценаріїв. Об’єкт XMLHttpRequest бере на себе одну з функцій браузера, а саме формування і передачу запиту до Web-сервера, і скористатися нею досить просто. Спочатку слід відкрити запит (метод open ()), вказавши характеристики заголовка, а потім передати його (send ()). Принципове питання – чи потрібно тепер чекати відповіді? Якби необхідно було чекати відповідь від сервера, то об’єкт XMLHttpRequest був би абсолютно даремний. Звідси можна зробити висновок, що XMLHttpRequest використовується найчастіше, так як за допомогою JavaScript робити асинхронні запити до серверу не складно, це може зробити і новачок. Однак крім звичайного JavaScript існує проток WebSocket. WebSocket [5] – постійне з’єднання поверх http (s). При встановленні з’єднання відбувається комунікація за допомогою спеціальних http заголовків, після будь-яка сторона в будь-який момент часу (поки з’єднання не урветься) може записувати в тіло запиту повідомлення. Кожне таке повідомлення містить дані, що передаються, та мета-дані. WebSocket має схожість з tcp, тільки замість пакета у нас повідомлення. Так як ws працюють поверх http, який в свою чергу працює поверх tcp, то формально одне повідомлення може бути розбите на кілька tcp пакетів, а в одному пакеті може міститися кілька повідомлень, проте одиницею даних для ws є саме повідомлення. WebSocket – це постійне з’єднання, яке буде «висіти» поки будь-яка зі сторін не закриє його або поки не обірветься зв’язок. Так як WebSocket формально може простоювати (коли немає обміну даними), то tcp з’єднання для нього потрібно відкривати з опцією keep-alive, а також; бажано відправляти http заголовки для keep-alive при комунікації. Будь-яка сторона в будь-який момент часу може відправити будь-яку кількість повідомлень. Сторона отримає дані, коли до неї дійдуть все tcp пакети самого раннього з повідомлень (це гарантує, що повідомлення прийдуть в тому ж порядку, в якому вони були відправлені).

Для обробки не дуже великих обсягів інформації добре зарекомендували себе технології WebSocket і AJAX. Але при обробці достатньо великих обсягів інформації використання цих технологій викликає певні труднощі. При використанні AJAX користувач може довгий час бачити або білий екран, або маркер завантаження, доки дані не будуть завантаженні. При використанні WebSocket виникає аналогічна ситуація з завантаженням даних, але користувач, на відміну від AJAX, це може не помітити, і навантаження на мережу і браузер призведе до зменшення продуктивності комп’ютера користувача.

Метод підвищення продуктивності асинхронного оновлення даних. Для підвищення продуктивності Web-систем при асинхронній обробці даних в роботі пропонується метод, який складається з чотирьох етапів: аналіз даних, розділення цілісних даних на рівні частини, відправка частин за допомогою потоку виводу та відображення частин даних користувачу за допомогу JavaScript.

Найважливіший етап – це аналіз даних. Для того, щоб розділити дані, необхідно дізнатися, дані якого типу додали до системи, і який метод розділення даних потрібно застосувати. Якщо це текстові дані, потрібно підрахувати кількість речень, отримати пінг с користувачем і підрахувати на скільки частин потрібно поділити текст, використовуючи формулу , де N – кількість частин тексту, A – кількість речень у тексті, В – значення пінгу. Ця формула буде застосовуватися, якщо кількість речень більше за 5000. В іншому випадку буде використовуватись формула . Після того, як було отримано значення кількості частин, треба передати як текст так і данні до модулю, який розділить данні на частини, а також відправити їх користувачу. Для цього застосовується технологія WebSocket, так як вона найбільше підходить для досягнення поставленої мети.

Для відправки даних спочатку потрібно отримати об’єкт виводу даних. Після отримання потоку виводу, буде запущений цикл по масиву з даними. Потрібно кожний елемент масиву записати у поток виводу і відправити користувачу. На кожній ітерації відправляється невелика частина тексту, і користувач може працювати з нею, поки інші частини даних завантажуються. Ітерації повторюються, поки весь текст не буде відправлений. Це допоможе зменшити навантаження на мережу і на пристрій користувача.

Висновки. В роботі була розроблена Web-система, яка реалізує представлений метод. Після того були проведені експерименти з використанням класичного методу та представленого у роботі методу. Експеримент був проведений із строковим типом даних, для цього був використаний текст об’ємом 1 GB. В результаті серії експериментів було виявлено, що при використанні запропонованого методу користувач отримував дані для роботи швидше, ніж при використанні класичного методу.

Література

  1. FAQ appendix 1: как писать сервера – fido7.ru.unix.prog. Группы Google [Електронний ресурс]. – Режим доступу: http://groups.google.ru/group/fido7.ru.unix.prog/browse_thread/thread/e8f8edf4f2f2447b/ – Загл. с экрана.
  2. The Apache HTTP Server Project [Електронний ресурс]. – Режим доступу: http://httpd.apache.org/ – Загл. с экрана.
  3. Уэйнрайт П. Apache для профессионалов. – М.: Wrox Press Ltd, 2001. – 474 с.
  4. Nginx [Електронний ресурс]. – Режим доступу: http://sysoev.ru/nginx/ – Загл. с экрана.
  5. HTML5 WebSocket protocol and its application to distributed computing [Text]/ Gabriel L. Muller, 2014. – 64 c.

Перегляди: 619

Коментарі закрито.

To comment on the article - you need to download the candidate degree and / or doctor of Science

Підготуйте

наукову статтю на актуальну тему, відповідно до роздлів журналу

Відправте

наукову статтю на e-mail: editor@inter-nauka.com

Читайте

Вашу статтю на сайті нашого журналу та отримайте сертифікат