Реферат за темою випускної роботи

Увага! Даний реферат відноситься до ще не завершеної роботи. Орієнтовна дата завершення: червень 2017 р.
Звертайтеся до автора після зазначеної дати для отримання остаточного варіанту

Зміст

1 Актуальність теми

Сьогодні користувачами Інтернет є більш ніж 3.2 мільярда чоловік, що становить понад 40% від населення Землі. Це говорить про надзвичайне проникнення всесвітньої мережі в життя людства.

Минуло понад 20 років з моменту, коли суспільству був представлен перший текстовий браузер і перший веб-сайт, що пояснює що таке World Wide Web. Доступ в Інтернет тепер можна отримати майже в будь-якому місці планети, за допомогою не тільки комп'ютера, але і телефону, планшету та інших менш поширених пристроїв. На рисунку 1.1 приведена діаграма, що відображає кількість населення, що має доступ в Інтернет по роках. З чого випливає висновок, що кількість користувачів всесвітньої мережі постійно зростає. На рисунку 1.2 зображений результат досліджень Яндекс, що відображає відсоткове співвідношення пристроїв, з яких здійснюється вихід в Інтернет російськими користувачами. На рисунку 1.3 відображені, результати дослідження Mail.Ru Group, що відображають процентне співвідношення типів пристроїв, що використовуються геймерами. Дані, відображені на рисунках, свідчать про популярність мобільних пристроїв, як засобів виходу в Інтернет, а відповідно і більшої аудиторії користувачів, ніж у програм, які орієнтовані тільки на користувачів ПК.


Розвиток Інтернет за даними Facebook
Рисунок 1.1 — Розвиток Інтернет за даними Facebook [1]

Як виходять в мережу користувачі Інтернету
Рисунок 1.2 — Як виходять в мережу користувачі Інтернету [2]

Пристрої, на яких грають геймери
Рисунок 1.3 — Пристрої, на яких грають геймери [3]

Не менш важливим при розробці програми є аналіз потенційної аудиторії (стать, вид діяльності, вік, пристрій для гри і популярні жанри). Інформацію по всім необхідним параметрам, щодо ігор, можна отримати на сайті Gamestats.mail.ru. Для наочності наведемо деякі картинки, що відображають основні характеристики: рисунок 1.4 зображена характеристика по користувачам і використовуваним пристроям, рисунок 1.5 відображає вісім найбільш популярних жанрів ігор за кордоном. З наведених рисунків можна сказати, що ігри в жанрі стратегія мають дуже велику аудиторію, а програми для мобільних пристроїв конкурентоспроможні з програмами для ПК.


Загальна характеристика основних параметрів
Рисунок 1.4 — Загальна характеристика основних параметрів [4]

Популярні ігрові жанри
Рисунок 1.5 — Популярні ігрові жанри [4]

2 Мета і завдання дослідження, плановані результати

Мета роботи — проектування високопродуктивної розподіленої інформаційної системи та визначення напрямків її розвитку при збільшенні користувачів бази і навантаження.

Основні завдання дослідження:

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

3 Огляд досліджень і розробок

Досліджувана тема популярна не тільки в міжнародних, але і в національних наукових спільнотах.

3.1 Огляд міжнародних джерел

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

Книга професора Амстердамського вільного університету Е.Таненбаума [5] розповідає про базові знання з розподілених систем, які описують концепції, принципи і технології таких систем, а також увага читача акцентується на світовій мережі Інтернет (World Wild Web), стрімкий розвиток якої і став причиною популярності та зацікавленості в розподілених системах.

У статті «Scalable Web Architecture and Distributed Systems» [6] Kate Matsudaira, описуються принципи побудови розподілених веб-систем і найважливіші фактори, які відносяться до більшості великих веб-програм (надмірність, сервіси, сегментування, обробка відмов) на прикладі «Програма хостингу зображень».

Також при розробці розподілених систем активно використовується CAP-теорема, запропонована у 2000 році професором каліфорнійського університету Еріком Брюєром [7]. Ця теорема є евристичним твердженням, яке говорить, що в будь-який реалізації розподілених систем можна забезпечити тільки дві властивості з трьох: узгодженість, доступність і стійкість. У той самий час багато вчених критикують дану теорему за вільність її трактування в суспільстві [8].

Через два роки після доповіді Еріка Брюєра було опубліковано дослідження Ненсі Лінч і Еріка Гілберта, що дали визначення поняттям CAP і формалізували «відкладену узгодженість», тим самим довівши CAP-теорему, що назвали «узгодженість в кінцевому рахунку» (Eventual Consistency [9] або BASE ) [10].

3.2 Огляд національних джерел

У національних джерелах тема створення розподілених систем так само популярна, як і на міжнародному науковому суспільстві.

У статті «Проблеми розподілених систем» Цвєткова В.Я. і Алпатова А.Н. [11] описуються: особливості, вимоги, проблеми, що виникають при створенні та експлуатації розподілених систем і наведена їх класифікація.

Стаття Бершадського А. М., Курилова Л.С. і Фіногеева А.Г. «Дослідження стратегій балансування навантаження у системах розподіленої обробки даних» [12] розглядає засоби і методи балансування навантаження в розподілених системах, а також систематизований підхід за основними ознаками.

Стаття Пушкіна І.О. «Розробка відмовостійкої розподіленої багатоклієнтської гри» описує, як влаштована серверна частина відмовостійкої розподіленої багатоклієнтської гри і розглянут патерн програмування, розроблений у ході проектування ігрового сервера [13].

3.3 Огляд локальних джерел

Оптимізації та оцінки продуктивності баз даних і розподілених програм присвячені деякі роботи магістрів ДонНТУ.

Так, у роботі Бабич К.К. «Оптимізації для високонавантажених реляційних БД і альтернативні рішення» [14] акцент робиться на забезпечення швидкодії при роботі з базами даних, але при цьому у роботі проектується і розробляється онлайн система, яка є аналогом друкованого періодичного видання.

У роботі Плотникова Д.Ю. «Методи і засоби підвищення ефективності Інтернет-додатків» [15] розглядається розробка правил і рекомендацій, які дозволять створювати проекти (сайти), які здатні витримувати високе навантаження.

4 Властивості розподілених систем і підходи до їх реалізації

4.1 Визначення вимог до розподіленої системи

При визначенні поняття розподілена система різні джерела іноді дають суперечливі визначення:

  • система кількох автономних обчислювальних вузлів, що взаємодіють для виконання спільної мети;
  • система, чиї компоненти розміщені на різних вузлах, що взаємодіють та управляються тільки за допомогою передачі повідомлень;
  • cистема, що складається з набору двох або більше незалежних вузлів, які координують свою роботу за допомогою синхронного або асинхронного обміну повідомленнями.

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

Перш ніж приступати до проектування розподіленої системи необхідно знати вимоги, які пред'являються до неї: прозорість, відкритість, масштабованість та відмовостійкість.

Основним завданням розподіленої системи є приховування факту, що ресурси та процеси розподілені фізично по множині комп'ютерів, така властивість системи називається прозорістю. У таблиці 4.1 наведені різні форми прозорості

Таблиця 4.1 — Форми прозорості у розподілених системах

Прозорість Докладний опис
Доступ приховування різниці у способах представлення даних та у способах доступу до ресурсів
Місцезнаходження приховування фізичного розташування ресурсів (всі ресурси повинні мати тільки логічні імена, наприклад URL)
Перенесення можливість ресурсу у різні моменти часу змінювати своє розташування, але при цьому бути доступним по новому шляху, але за тією, же логічною адресою
Зміна місця розташування можливість ресурсу змінювати своє положення безпосередньо у процесі його використання (прикладом можуть служити користувачі, які при використанні бездротового зв'язку можуть переходити у інший район, не відключаючись від мережі)
Реплікація приховування факту, що ресурс був реплікован, тобто розмножений по кільком фізичним адресами (використовується при балансуванні використання ресурсів)
Паралельний доступ приховування від користувача розподіленої системи факту, що він є не єдиним її користувачем. Наприклад, працюючи з СУБД (система управління базою даних) користувач, відправляючи запит не повинен знати, що паралельно з його запитом СУБД обробляє та отримує запити від інших користувачів
Відмова приховування факту поломки або відмови однієї з частин розподіленої системи від її користувача
Збереженість приховування місця зберігання ресурсу (фізичний носій або оперативна пам'ять)

Під відкритістю мається на увазі використання семантики та синтаксису, які засновані на стандартах, а саме використання формалізованих протоколів. Служби, які є частиною розподіленої системи, описуються за допомогою мови визначення інтерфейсів (Interface Definition Language, IDL), що стосується виключно синтаксису (типи параметрів, імена доступних функцій, зворотні значення та т.п.). Складним завданням є опис діяльності служби (семантика), тому нерідко вона задається неформально за допомогою природної мови.

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

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

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

При роботі з розподіленими системами слід розуміти, що в різні моменти часу частини системи можуть бути відключені або навпаки включені, але користувачі системи не повинні отримувати повідомлення, пов’язані зі змінами у компонентах системи.

Відмовостійкість — здатність системи автоматично розподіляти функції у системі, при виникненні ситуації, коли з ладу виходить один з компонентів мережі, тобто вихід з ладу одного з серверів не призводить до неможливості обслуговувати запити користувачів [16].

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

4.2 Клієнт-серверна архітектура

За основу при проектуванні архітектури розподіленої мережної програми слід взяти триланкову клієнт-серверну архітектуру, яка передбачає виділення трьох логічних шарів (рисунок 4.1) у програмі: призначений для користувача інтерфейс (клієнтська частина програми), правила логічної обробки (сервер додатків) та керування даними (сервер баз даних ) [17].


Трирівнева модель клієнт-серверної програми
Рисунок 4.1 — Трирівнева модель клієнт-серверної програми [17]

Порядок обробки запитів в системі проходить певну послідовність кроків:

  1. Клієнт за допомогою API здійснює запит до сервера програм;
  2. сервер програм передає запит SQL-серверу баз даних;
  3. сервер баз даних обробляє запит та повертає серверу програм набір записів;
  4. сервер програм повертає отримані дані до клієнтської частини;
  5. клієнтська сторона перетворює дані, отримані від сервера програм, у необхідний програмі формат та відображає результат користувачу.

При розробці розподіленої програмі, відповідно до принципів трирівневої моделі клієнт-серверної програмі, слід розглянути її переваги та недоліки. До переваг такої архітектури відноситься:

  • масштабованість — здатність системи адаптуватися до зростання кількості користувачів та обсягу бази даних при адекватному підвищенні продуктивності апаратної платформи, без заміни програмного забезпечення;
  • конфігурованість — ізольованість рівнів один від одного дозволяє (при правильному розгортанні архітектури) швидко та звичайними засобами переконфігурувати систему при виникненні збоїв або при плановому обслуговуванні на одному з рівнів;
  • високий рівень безпеки;
  • висока надійність;
  • низькі вимоги до швидкості каналу (мережі) між терміналами та сервером програм;
  • низькі вимоги до продуктивності та технічних характеристик терміналів, як наслідок зниження їх вартості. Терміналом може виступати не тільки комп'ютер, але й мобільний телефон.

Недоліки випливають з достоїнств. У порівнянні c клієнт-серверної або файл-серверної архітектурою можна виділити наступні недоліки трирівневої архітектури:

  • більш висока складність створення програм;
  • складніше у розгортанні й адмініструванні;
  • високі вимоги до продуктивності серверів програм й сервера бази даних, що означає високу вартість серверного обладнання;
  • високі вимоги до швидкості каналу (мережі) між сервером бази даних й серверами програм [18].

На початковому етапі створення, структура мережної програми не буде розподіленою та буде виглядати, як зображено на рисунку 4.2. Згідно рисунку у нас є багато користувачів, один сервер та одна база даних, але при зростанні кількості користувачів час очікування користувачами відповіді від сервера буде зростати або деякі користувачі зовсім не отримають відповідь від сервера.

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


Простий варіант схеми мережної програми
Рисунок 4.2 — Простий варіант схеми мережної програми

Схема мережної програми з розподіленням навантаження між серверами
Рисунок 4.3 — Схема мережної програми з розподіленням навантаження між серверами

В ході дослідження буде розроблена архітектура мереженої програми та програма з мінімальним функціоналом, який дозволить провести оцінку швидкості роботи системи. В основі, розробки, буде лежати ідея, що має на увазі взаємодію гравців не в реальному часі. Прикладом можуть слугувати ігри від компанії ZeptoLab «King of Thieves» та Supercell «Boom Beach».

King of Thieves — гра, яка об'єднує у собі елементи платформера та tower defense і виконана у мультяшному стилі. Головною метою гри, є, отримання гравцем звання «Король злодіїв». Для цього гравцю необхідно: красти золото та коштовне каміння у інших гравців, захищати власні скарби, шляхом створення складних підземель, створювати / збирати коштовне каміння у шахтах і змагатися з іншими гравцями за місця у лігах, що відображають просування гравця за етапами гри [19].

Ідея Boom Beach аналогічна, тільки тут гравцю необхідно стати командиром острівної бази. Необхідно покращувати свою базу, завойовувати і звільняти острови, захоплені Чорною Гвардією під командуванням Лейтенанта Хаммерман [20]. На рисунку 4.4 зображені кадри з ігор-прикладів.


Кадри з ігор прикладів
Рисунок 4.4 — Кадри з ігор прикладів [21, 22]
Розмір: 624 Кб; Кадрів: 10; Повторів: не обмежується; Затримка: 2 сек.

Висновки

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

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

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

Список джерел