Реферат по теме выпускной работы

Внимание! Данный реферат относится к еще не завершенной работе. Примерная дата завершения: Июнь 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 — Популярные игровые жанры [3]

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].


Трехуровневая модель клиент-серверного приложения
Рисунок 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 сек.

Так же в разрабатываемое приложение может быть добавлена возможность режима игры, позволяющего взаимодействовать игрокам в режиме реального времени.

Выводы

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

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

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

Список источников