Перечень сокращений и обозначений 6
Введение 7
1 Организация распределённых вычислений 9
1.1 Понятие вычислительной сети 9
1.1.1 Назначение вычислительных сетей. Основные определения и термины 9
1.1.2. Режимы работы и предоставляемые услуги 13
1.1.3 Классификация вычислительных сетей 14
1.2 Распределённые вычислительные системы 20
1.2.1 Введение в распределенные вычислительные системы 20
1.2.2 Промежуточное программное обеспечение 22
1.2.3 Терминология РВС 24
1.2.4 Классификация РВС 25
1.2.5 Связь в РВС 26
1.3 Бессерверные вычисления 27
1.3.1 Основные понятия 27
2 РЕАЛИЗАЦИЯ КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ 31
2.1 Определение инструментов разработки 31
2.1.1 Выбор языка программирования и среды разработки ПО 31
2.1.2 Выбор вида хранимых данных и инструментов для их хранения 33
2.2 Структура данных в приложении 33
2.2.1 Описание функциональных единиц, используемых в алгоритме 33
2.2.2 Примеры моделей распределённого алгоритма 34
2.2.3 Формальное представление распределённого алгоритма в бессерверной
системе 35
2.3 Структура приложений 36
2.3.1 Структура клиентского приложения 36
2.3.2 Структура серверного приложения 37
2.4 Выбор архитектуры приложения и формирование поведения системы 38
2.5 Описание процесса разработки системы 39
2.5.1 Описание разработки клиентского приложения 39
2.5.2 Описание разработки серверного приложения 42
3 ОПИСАНИЕ ПРОГРАММЫ 44
3.1 Описание клиентского приложения 44
3.2 Описание серверного приложения 46
3.3 Отладка и тестирование системы 47
3.4 Возможные пути последующих исследований 49
Заключение 50
Список использованных источников 51
Приложение А листинги Сервера 53
Приложение А.1 Файл main.cpp 53
Приложение А.2 Файл trackerserver.h 53
Приложение А.3 Файл trackerserver.cpp 55
Приложение А.4 Файл trackerworker.h 58
Приложение А.5 Файл trackerworker.cpp 59
Приложение Б Листинги программы Клиента 62
Приложение Б.1 Файл main.cpp 62
Приложение Б.2 Файл mainwindow.h 62
Приложение Б.3 Файл mainwindow.cpp 64
Приложение Б.4 Файл nodemanager.h 66
Приложение Б.5 Файл nodemanager.cpp 67
Приложение Б.6 Файл netnodeinterface.h 68
Приложение Б.7 Файл networknode.h 69
Приложение Б.8 Файл networknode.cpp 70
Приложение Б.9 Файл nodetask.h 77
Приложение Б.10 Файл nodetask.cpp 78
Приложение Б.11 Файл nodeserver.h 80
Приложение Б.12 Файл nodeserver.cpp 81
Приложение Б.13 Файл nodeserverworker.h 83
Приложение Б.14 Файл nodeserverworker.cpp 84
Приложение В Презентация 86
С каждым годом увеличивается потребность в компьютерном вычислении. В течение последних десятилетий планомерно повышению потребностей также росли и вычислительное мощности устройств, предназначенных для этой цели. Однако темпы роста характеристик вычислительных систем падает с каждым годом. Вследствие чего одним лишь улучшением производительности отдельной машины выполнять имеющиеся вычислительные задачи в заданный срок стало невозможным.
В связи с этим были принято решение увеличивать количество вычислительных модулей в системе. Это можно увидеть в увеличении числа ядер процессора на одном кристалле, возможности установить множество устройств на одной плате, так и путём соединения нескольких вычислительных систем в одну сеть.
Выполнение задач на наборе компьютеров в одной сети позволяет создавать вычислительные системы, способные обработать большие наборы данных, при этом позволяя сократить расходы на приобретение вычислительных ресурсов, а также данный способ увеличения вычислительных мощностей хорошо масштабируем в отличие от решений, выполненных на одном физическом устройстве.
В связи с удобством развертывания локальных сетей было придумано множество способов взаимодействия узлов сети между собой, тем не менее проблема развёртки распределённого приложения на ЛВС и быстрая смена её конфигурации всё ещё остаётся актуальной.
Целью данной выпускной квалификационной работы является разработка программы получения узлом локальной вычислительной сети сведений о текущей конфигурации сети под настроенный алгоритм, получить соответствующие указания для включения в цепочку выполнения распределённого алгоритма, а также обеспечить проверку выполнения алгоритма внутри сети.
Для достижения указанной цели были поставлены и решены следующие задачи:
• изучение как выполняются распределённые вычисления;
• изучение технологии бессерверных вычислений;
Объект исследования — локальная вычислительная сеть, состоящая из набора компьютеров.
Предметом исследования являются модели и алгоритмы развёртывания распределённых вычислительных систем на сеть.
Результатом работы является проект бессерверного приложения, выполняющего распределённый алгоритм.
Программа написана на языке С++ при помощи фреймворка Qt версии 5 и упакована в архив с файлами, который можно распаковать на любом компьютере имеющейся программой разархивирования. Данный проект достиг целей, указанных при постановке задачи.
К особенностям проекта можно отнести его полуавтоматическую работу, простоту конфигурации и быстрое развёртывание на множестве настольных ОС.
В процессе отладки и тестирования были обнаружены ошибки и недочёты, которые были своевременно исправлены. При повторном выполнении тестирования системы эти ошибки не воспроизводились.
Работа над проектом позволила расширить знания и улучшить навыки с фреймворком Qt.
В текущем виде данное решение не позволяет конкурировать с имеющимися решениями в среде бессерверных вычислений и требует существенных доработок.
1. Олифер В., Олифер Н. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 5-е изд. — СПб.: Питер, 2016. — 992 с.
2. В.П. Галас. Вычислительные системы, сети и телекоммуникации. Учебник в двух частях. Часть 2. Сети и телекоммуникации - ВлГУ, 2017 - 284 с.
3. Г.И. Радченко Распределенные вычислительные системы. Учебное пособие
- Челябинск: Фотохудожник, 2012. - 184 с.
4. I. Baldini, P. Castro, K. Chang, P. Cheng, S. Fink, V. Ishakian, N. Mitchell, V. Muthusamy, R. Rabbah, A. Slominski, P. Suter. Serverless Computing: Current Trendsand Open Problems, 2017 - 20 с.
5. С. Джиджи Осваиваем Kubernetes. Оркестрация контейнерных архитектур.
- СПб.: Питер, 2019. — 400 с.
6. Qt Documentation: Signals and slots [Электронный ресурс] - статья с сайта Qt. URL:https:// doc. qt.io/qt-5/signalsandslots.html
7. Н. Стародубцев. Serverless по стоечкам [Электронный ресурс] - статья с сайта Selectel. URL:https://selectel.ru/blog/serverless-po-stoechkam/
8. А. Сидоров. Бессерверные вычисления: что это такое и почему это важно
[Электронный ресурс] - статья с сайта ItWeek URL:
https://www.itweek.ru/its/article/detail.php?ID=200238
9. И. Д. Тугарев. Информационные технологии в науке и образовании: Обеспечение автоматической развёртки распределённого алгоритма для локальной вычислительной сети.- Изд. ПГУ, 2020 - с. 25-27
10. А. Барский. Grid-вычисления. - М.: LAP Lambert Academic Publishing, 2012.
- 348 с.
11. Б. Амиршахи. Оптимизация Межресурсного Обмена в Распределенных GRID-Вычислениях. - М.: LAP Lambert Academic Publishing, 2012. - 120 с.
12. П. Фингар. Dot.Cloud: облачные вычисления - бизнес-платформа XXI века. - М.: Аквамариновая Книга, 2011. - 256 с.
13.Ч. Белл, М. Киндал, Л. Талманн. Обеспечение высокой доступности систем на основе MySQL. - М.: Русская Редакция, БХВ-Петербург, 2011. - 624 с.
14. Т. Редкар, Т. Гвидичи. Платформа Windows Azure. - М.: ДМК Пресс, 2012. - 656 с.
15. В.О. Сафонов. Платформа облачных вычислений Microsoft Windows Azure. -
М.: Интернет-университет информационных технологий, Бином.
Лаборатория знаний, 2013. - 240 с.
...
25 источников