Реферат по теме выпускной работы
Обращайтесь к автору после указанной даты для получения окончательного варианта
Содержание
1 Актуальность темы
Сегодня пользователями Интернет являются более 3.2 миллиарда человек, что составляет более 40% от населения Земли. Это говорит о чрезвычайном проникновении всемирной сети в жизнь человечества.
Прошло более 20 лет с момента, когда широкой общественности был представлен первый текстовый браузер и первый веб-сайт, объясняющий что такое World Wide Web. Доступ в Интернет теперь можно получить практически в любом месте планеты, при помощи не только компьютера, но и телефона, планшета и других менее распространенных устройств. На рисунке 1.1 приведена диаграмма, отражающая количество населения, имеющего доступ в Интернет по годам. Из чего следует вывод, что количество пользователей всемирной сети постоянно растет. На рисунке 1.2 изображен результат исследований Яндекс, отражающий процентное соотношение устройств, с которых осуществляется выход в Интернет российскими пользователями. На рисунке 1.3 отображены, результаты исследования Mail.Ru Group, отражающие процентное соотношение типов устройств, используемых геймерами. Данные, отображенные на рисунках, свидетельствуют о популярности мобильных устройств, как средств выхода в Интернет, а соответственно и большей аудитории пользователей, чем у приложений, ориентированных только на пользователей ПК.
Не менее важным при разработке приложения является анализ возможной аудитории (пол, вид деятельности, возраст, устройство для игры и популярные жанры). Информацию по всем необходимым параметрам, касательно игр, можно получить на сайте Gamestats.mail.ru. Для наглядности приведем некоторые картинки, отражающие основные характеристики: рисунок 1.4 сводная характеристика по пользователям и используемым устройствам, рисунок 1.5 отражает восемь самых популярных жанров игр за рубежом. Из приведенных рисунков следует, что игры в жанре стратегия имеют весьма обширную аудиторию, а приложения для мобильных устройств конкурентоспособны с приложениями для ПК.
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 Определение требований к распределенной системе
При определении понятия распределенная система разные источники дают разные и иногда сильно различающиеся определения:
- система нескольких автономных вычислительных узлов, взаимодействующих для выполнения общей цели;
- система, чьи компоненты размещены на различных узлах взаимодействующие и управляемые только посредством передачи сообщений;
- система, состоящая из набора двух или более независимых узлов, которые координируют свою работу посредством синхронного или асинхронного обмена сообщениями.
Классическим и общепринятым считается определение Таненбаума, которое гласит, что распределенная система это набор независимых компьютеров, представляющийся их пользователям единой объединенной системой.
Прежде чем приступать к проектированию распределенной системы необходимо знать требования, которые предъявляются к ней: прозрачность, открытость, масштабируемость и отказоустойчивость.
Основной задачей распределенной системы является сокрытие факта, что ресурсы и процессы распределены физически по множеству компьютеров, такое свойство системы называется прозрачностью. В таблице 4.1 приведены различные формы прозрачности
Таблица 4.1 — Формы прозрачности в распределенных системах
Прозрачность | Описание |
Доступ | сокрытие разницы в способах представления данных и в способах доступа к ресурсам |
Местоположение | сокрытие физического расположения ресурсов (все ресурсы должны иметь только логические имена, например URL) |
Перенос | возможность ресурса в разные моменты времени изменять свое расположение, но при этом быть доступным по новому пути, но по тому, же логическому адресу |
Смена местоположения | возможность ресурса изменять свое положение непосредственно в процессе его использования (примером могут служить пользователи, которые при использовании беспроводной связи могут переходить в другую зону обслуживания, не отключаясь от сети) |
Репликация | скрытие факта, что ресурс был реплицирован, т.е. размножен по нескольким физическим адресам (используется при балансировке использования ресурсов) |
Параллельный доступ | скрытие от пользователя распределенной системы факта, что он является не единственным ее пользователем. Например, работая с СУБД (система управления базой данных) пользователь, отправляя запрос не должен знать, что параллельно с его запросом СУБД обрабатывает и получает запросы от других пользователей |
Отказ | скрытие факта поломки или отказа одной из частей распределенной системы от ее пользователя |
Сохранность | скрытие места хранения ресурса (физический носитель или оперативная память) |
Под открытостью подразумевается использование семантики и синтаксиса, которые основаны на стандартах, а именно использование формализованных протоколов. Службы, которые являются частью распределенной системы, описываются при помощи языка определения интерфейсов (Interface Definition Language, IDL), касающийся исключительно синтаксиса (типы параметров, имена доступных функций, возвращаемые значения и т.п.). Сложной задачей является описание деятельности службы (семантика), поэтому часто она задается неформально при помощи естественного языка.
Правильно описанный интерфейс позволяет совместно работать двум процессам, один из которых нуждается в интерфейсе, а второй его предоставляет. Важными способностями в интерфейсе являются переносимость и взаимодействие. Под переносимостью следует понимать: как приложение, реализованное для одной распределенной системы, способное работать в составе другой распределенной системы, без внесения изменений, реализуя те же интерфейсы, что и для разрабатываемой системы. Взаимодействие следует понимать как способность совместной работы двух различных компонентов или систем, принадлежащих разным производителям.
Гибкость (расширяемость) — важнейшая характеристика распределенной системы, подразумевающая легкость конфигурации системы (например, возможность простого добавления частей, работающих под управлением другой операционной системы).
Масштабируемость в распределенных системах может относиться к географическому положению, размеру и административному устройству систем. Для достижения масштабируемости необходимо решить проблемы, связанные с наличием узких мест в обслуживании (один сервер для множества клиентов), данных (множественный доступ к одному файлу) и алгоритмах (перегрузка коммуникаций из-за использования централизованных алгоритмов).
При работе с распределенными системами следует понимать, что в различные моменты времени части системы могут быть отключены или наоборот включены, но пользователи системы не должны получать уведомления о вносимых изменениях в компоненты системы.
Отказоустойчивость — способность системы автоматически распределять функции внутри системы, при возникновении ситуации, когда выходит из строя один из компонентов сети, т.е. выход из строя одного из серверов не приводит к невозможности обслужить запрос пользователя [16].
Помимо этих требований, при разработке распределенного сетевого многопользовательского приложения следует учитывать, что разрабатываемое приложение должно быть интерактивным (время с момента отправки запроса пользователем до момента получения ответа должно быть минимально, так как пользователь не будет слишком долго ожидать).
4.2 Клиент-серверная архитектура
За основу при проектировании архитектуры распределенного сетевого приложения следует взять трехзвенную клиент-серверную архитектуру, предполагающую выделение трех логических слоев (рисунок 4.1) у приложения: пользовательский интерфейс (клиентская часть приложения), правила логической обработки (сервер приложений) и управление данными (сервер баз данных) [17].
Порядок обработки запросов в системе проходит определенную последовательность шагов:
- клиент посредством API осуществляет запрос к серверу приложений;
- сервер приложений передает запрос SQL-серверу баз данных;
- сервер баз данных обрабатывает запрос и возвращает серверу приложений набор записей;
- сервер приложений возвращает полученные данные клиентской части;
- клиентская сторона преобразует данные, полученные от сервера приложений, в необходимый приложению формат и отображает результат пользователю.
При разработке распределенного приложения, следуя принципам трехуровневой модели клиент-серверного приложения, следует рассмотреть ее преимущества и недостатки. К преимуществам такой архитектуры относится:
- масштабируемость — способность системы адаптироваться к росту количества пользователей и объема базы данных при адекватном повышении производительности аппаратной платформы, без замены программного обеспечения;
- конфигурируемость — изолированность уровней друг от друга позволяет (при правильном развертывании архитектуры) быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней;
- высокая безопасность;
- высокая надёжность;
- низкие требования к скорости канала (сети) между терминалами и сервером приложений;
- низкие требования к производительности и техническим характеристикам терминалов, как следствие снижение их стоимости. Терминалом может выступать не только компьютер, но и мобильный телефон к примеру.
Недостатки вытекают из достоинств. По сравнению c клиент-серверной или файл-серверной архитектурой можно выделить следующие недостатки трёхуровневой архитектуры:
- более высокая сложность создания приложений;
- сложнее в разворачивании и администрировании;
- высокие требования к производительности серверов приложений и сервера базы данных, а, значит, и высокая стоимость серверного оборудования;
- высокие требования к скорости канала (сети) между сервером базы данных и серверами приложений [18].
На начальном этапе создания, структура сетевого приложения не будет являться распределенной, и будет выглядеть, как изображено на рисунке 4.2. Согласно рисунку у нас есть много пользователей, один сервер и одна база данных, но при возрастании количества пользователей время ожидания пользователями ответа от сервера будет расти или некоторые пользователи вовсе не получат ответ от сервера.
Если же говорить о распределенном приложении, отвечающее поставленным требованиям, например: балансировка нагрузки на узлы системы, обеспечение пользователя всегда точной, достоверной и актуальной информацией, восстановление данных в случае возникновения ошибки, обеспечение быстродействия и масштабируемости системы, то возможная схема такого приложения отображена на рисунке 4.3. При увеличении нагрузки на систему, схема сетевого приложения будет все больше усложняться.
В ходе исследования будет разработана архитектура сетевого приложения и само приложение с минимальным функционалом, который позволит оценить скорость работы системы. В основе, разрабатываемого приложения, будет лежать идея, подразумевающая взаимодействие игроков не в реальном времени. Примером могут служить игры от компании ZeptoLab «King of Thieves» и Supercell «Boom Beach».
King of Thieves — игра, объединяющая в себе элементы платформера и tower defense и выполненная в мультяшном стиле. Главной целью игры, является, получение игроком звания «Король воров». Для этого игроку необходимо: красть золото и драгоценные камни у других игроков, защищать собственные сокровища, путем создания сложных подземелий, создавать/собирать драгоценные камни в шахтах и соревноваться с другими игроками за места в лигах, отражающих продвижение игрока по этапам игры [19].
Идея Boom Beach аналогична, только здесь игроку предстоит стать командиром островной базы. Необходимо улучшать свою базу, завоевывать и освобождать острова, захваченные Черной Гвардией под командованием Лейтенанта Хаммермана [20]. На рисунке 4.4 изображены кадры из игр-примеров.
Так же в разрабатываемое приложение может быть добавлена возможность режима игры, позволяющего взаимодействовать игрокам в режиме реального времени.
Выводы
Анализ источников показал, что тема проектирования и создания распределенных приложений актуальна не только в международном, но и национальном и локальном научных сообществах.
Были выдвинуты основные требования к распределенным системам и описаны: принцип работы, преимущества и недостатки трехуровневой клиент-серверной архитектуры, а так же приведены схемы простого сетевого приложения, основанного на этой архитектуре, без использования распределения и схема простого распределенного приложения.
Дальнейшая работа будет направлена на разработку схем сетевого приложения по мере изменения требований и нагрузок на систему, а так же на разработку приложения, реализовывающего минимальный функционал, приведенных примеров игр, необходимый для моделирования и исследования реакции приложения на возникающую нагрузку.
Список источников
- 1. Facebook подсчитала количество пользователей Интернета [Электронный ресурс]. Режим доступа: http://www.3dnews.ru/928959
- 2. Компания Яндекс - Исследования - Развитие интернета в регионах России [Электронный ресурс]. Режим доступа: https://yandex.ru/company/researches/2016/ya_internet_regions_2016
- 3. Игровая индустрия в России и мире Исследования Mail.Ru Group - Mail.Ru [Электронный ресурс]. Режим доступа: https://gamestats.mail.ru/
- 4. Российский игровой рынок: кто играет, как играет / Блог компании Mail.Ru Group / Хабрахабр [Электронный ресурс]. Режим доступа: https://habrahabr.ru/company/mailru/blog/183248/
- 5.Таненбаум, Эндрю - Википедия [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Таненбаум,_Эндрю
- 6. The Architecture of Open Source Applications (Volume 2): Scalable Web Architecture and Distributed Systems (Kate Matsudaira) [Электронный ресурс]. Режим доступа: http://www.aosabook.org/en/distsys.html
- 7. Eric Brewer (scientist)- Wikipedia, the free encyclopedia [Электронный ресурс]. Режим доступа: https://en.wikipedia.org/wiki/Eric_Brewer_%28scientist%29
- 8. CAP theorem - Wikipedia, the free encyclopedia [Электронный ресурс]. Режим доступа: https://en.wikipedia.org/wiki/CAP_theorem
- 9. Eventual consistency - Wikipedia, the free encyclopedia [Электронный ресурс]. Режим доступа: https://en.wikipedia.org/wiki/Eventual_consistency
- 10. Несколько фактов о CAP-«теореме» / Хабрахабр [Электронный ресурс]. Режим доступа: https://habrahabr.ru/post/231703/
- 11. Цветков Виктор Яковлевич, Алпатов Алексей Николаевич Проблемы распределенных систем // ПНиО. 2014. №6 (12) [Электронный ресурс]. Режим доступа: http://cyberleninka.ru/article/n/problemy-raspredelennyh-sistem
- 12. Бершадский Александр Моисеевич, Курилов Леонид Сергеевич, Финогеев Алексей Германович Исследование стратегий балансировки нагрузки в системах распределенной обработки данных // Известия ВУЗов. Поволжский регион. Технические науки. 2009. №4. [Электронный ресурс]. Режим доступа: http://cyberleninka.ru/article/n/issledovanie-strategiy-balansirovki-nagruzki-v-sistemah-raspredelennoy-obrabotki-dannyh
- 13. Пушкин Иван Александрович Разработка отказоустойчивой распределенной многопользовательской игры // APRIORI. Серия: Естественные и технические науки. 2015. №2. [Электронный ресурс]. Режим доступа: http://cyberleninka.ru/article/n/razrabotka-otkazoustoychivoy-raspredelennoy-mnogopolzovatelskoy-igry
- 14. Бабич Кристина Константиновна «Оптимизации для высоконагруженных реляционных БД и альтернативные решения» [Электронный ресурс]. Режим доступа: http://masters.donntu.ru/2013/fknt/babich/index.htm
- 15. Плотников Денис Юрьевич «Методы и средства повышения эффективности Интернет—приложений» [Электронный ресурс]. Режим доступа: http://masters.donntu.ru/2012/fknt/plotnikov/index.htm
- 16. Tanenbaum A., Van Steen M. Distributed systems. Pearson Prentice Hall, 2007.
- 17. Модели взаимодействия клиент-сервер - Студопедия[Электронный ресурс]. Режим доступа: http://studopedia.ru/3_72093_modeli-vzaimodeystviya-klient-server.html
- 18. Трехуровневая архитектура. Достоинства и недостатки - Студопедия [Электронный ресурс]. Режим доступа: http://studopedia.ru/8_43424_trehurovnevaya-arhitektura-dostoinstva-i-nedostatki.html
- 19. Король Воров - мобильная игра от ZeptoLab. Официальный сайт. [Электронный ресурс]. Режим доступа: http://www.ktgame.ru/
- 20. Об игре Boom Beach (Бум Бич). [Электронный ресурс]. Режим доступа: http://boomgamer.ru/raznoe/about-game
- 21. Приложения на Google Play – King of Thieves [Электронный ресурс]. Режим доступа: https://play.google.com/store/apps/details?id=com.zeptolab.thieves.google&hl=ru
- 22. Приложения на Google Play – Boom Beach [Электронный ресурс]. Режим доступа: https://play.google.com/store/apps/details?id=com.supercell.boombeach&hl=ru