Тема: Проектирование архитектуры и моделирование отказов при разработке серверного программного обеспечения системы управления задачами разработки инженерно-проектной документации
Характеристики работы
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1 Конструкторская часть 7
1.1 Проектирование серверного ПО на основе микросервисной архитектуры 7
1.1.1. Архитектура доступа к данным 8
1.1.2. Проектирование микросервисов на основе многопоточности 10
1.1.3. Обзор микросервисов 12
1.1.3.1. Микросервис mpserver 12
1.1.3.2. Микросервис mpj ournalserver 13
1.1.3.3. Микросервис mpfileserver 13
1.2. Применение протоколов сетевого взаимодействия в серверном ПО 15
1.2.1. Организация потоков сетевого взаимодействия на основе HTTP API 15
1.2.2. Недостатки схемы взаимодействия на основе HTTP API 21
1.2.3. Внедрение потоков сетевого взаимодействия на основе протокола WebSocket 22
1.3. Реализация механизма оповещений на основе протокола WebSocket 28
1.3.1. Разработка микросервиса mprouter 28
1.3.2. Внедрение поддержки механизма оповещения в существующие микросервисы...31
1.3.3. Протокол обмена данными между микросервисами в рамках механизма
оповещения 35
1.4. Преимущества использования гибридной схемы сетевого взаимодействия 37
1.5. Сравнительный анализ архитектур серверного ПО с точки зрения устойчивости к
нагрузкам 38
1.5.1. Постановка задачи сравнительного анализа 38
1.5.2. Разработка классов сущностей имитационной модели ИС 39
1.5.2.1. Класс Request 41
1.5.2.2. Класс Client 43
1.5.2.3. Класс Device 44
1.5.2.4. Класс ServerDevice 44
1.5.2.5. Класс Nginx 45
1.5.2.6. Класс Simulation 46
1.5.3. Построение имитационных моделей на основе разработанных классов 50
1.5.4. Сбор исходных данных для моделирования 55
1.5.5. Определение достоверности результатов моделирования 60
1.5.6. Сравнительный анализ результатов моделирования 61
2. Технологическая часть 64
2.1. Обзор протокола HTTP 64
2.2. Обзор протокола WebSocket 66
2.3. Обзор инструментов разработки серверного ПО 69
2.3.1. Использование языка С++ в разработке высоконагруженных приложений 69
2.3.2. Использование фреймворка Ultimate++ в разработке 72
2.3.2.1.Обзор класса TcpSocket 73
2.3.2.2.Обзор класса HttpRequest 75
2.3.2.3.Обзор класса WebSocket 75
2.4. HTTP-сервер Nginx 77
2.5. Обзор архитектур серверного ПО 80
2.5.1. Монолитная архитектура 80
2.5.2. Микросервисная архитектура 82
ЗАКЛЮЧЕНИЕ 86
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 87
ПРИЛОЖЕНИЕ А 88
📖 Введение
Наиболее распространенным подходом к проектированию серверного ПО является организация монолитной архитектуры программного обеспечения. Такой стиль проектирования позволяет организовать эффективное взаимодействие между компонентами ПО, однако имеет ряд проблем, среди которых можно выделить рост уровня сложности в сопровождении кода ПО по мере развития продукта, неэффективное использование метода горизонтального масштабирования, повышенные требования к организации отказоустойчивости системы.
В противовес монолитному стилю проектирования в настоящее время активно выступает микросервисный стиль. Микросервисная архитектура, как правило, подразумевает наличие задержек во взаимодействии между компонентами, но позволяет снизить требования к отказоустойчивости системы за счет изоляции компонентов ПО. В добавок к этому, архитектура хорошо масштабируется на кластере серверов, что способствует повышению производительности системы.
Целью данной выпускной квалификационной работы является исследование двух вопросов:
1. Какая из представленных выше архитектур серверного ПО применительно к разрабатываемой информационной системе является наиболее устойчивой к отказам в обслуживании клиентских запросов?
2. Какие изменения в существующей архитектуре серверного ПО поспособствуют повышению производительности при обработке клиентских запросов?
Для изучения первого вопроса были разработаны дискретно-событийные имитационные модели серверного ПО, спроектированного в микросервисном и монолитном стилях. Выбор был сделан в пользу реализации имитационных моделей, поскольку аналитические решения задачи моделирования представляются более сложными в виду стохастической природы процессов, протекающих в исследуемой системе. К тому же, имитационные модели не имеют существенных ограничений, влияющих на достоверность результатов моделирования.
Сравнительный анализ результатов моделирования дает представление о том, какая из моделей является наиболее устойчивой к отказам. Сравнение результатов моделирования со статистическими данными о работе реального серверного ПО позволяет определить, насколько корректно составлены модели. Результаты моделирования позволяют оценить, насколько правильным является выбор, сделанный в пользу реализации серверного ПО на основе микросервисной архитектуры.
Исследование второго вопроса заключается в анализе схемы сетевого взаимодействия между клиентской и серверной частями, а также внутри серверной инфраструктуры. Данная схема основана на протоколе сетевого взаимодействия HTTP.В данной схеме были выделены недостатки, препятствующие эффективному использованию ресурсов сервера программным обеспечением для обработки клиентских запросов. Для устранения недостатков была предложена и реализована новая схема сетевого взаимодействия, особенностью которых является наличие персистентных сетевых соединений на основе протокола WebSocketкак внутри серверной инфраструктуры, так и между клиентской и серверной частями.
✅ Заключение
В результате сравнительного анализа дискретно-событийных имитационных моделей серверного ПО на основе монолитной и микросервисной архитектур был сделан вывод о том, что в контексте разрабатываемого приложения реализация микросервисной архитектуры ПО является более устойчивой к отказам в обслуживании клиентских запросов.
На основе сравнения результатов моделирования работы микросервисного ПО со статистическими данными о работе реального серверного ПО был сделан вывод о том, что модель корректно отражает процессы, протекающие на серверной части разрабатываемого приложения, поэтому может считаться достоверной. Погрешность результатов моделирования не превышает 9.5%.
В существующее серверное ПО были внедрены изменения, касающиеся схемы сетевого взаимодействия в серверной инфраструктуре. Как результат, на клиентской части отпала необходимость в генерации большого количества HTTP-запросов на синхронизацию состояния сущностей ИС, появилась возможность для более эффективной реализации системы уведомлений. На серверной части уменьшилось общее число неэффективных входящих HTTP-запросов, большая часть интенсивного сетевого трафика с оповещениями теперь проходит через персистентные WebSocket-соединения. Вопрос о том, насколько эффективной является новая схема взаимодействия по отношению к предыдущей, в настоящее время исследуется, поэтому не рассматривается в данной выпускной квалификационной работе. В частности, разрабатывается новая имитационная модель, отражающая работу серверного ПО на основе микросервисной архитектуры с гибридной схемой сетевого взаимодействия.
В ходе выполнения работы были получены знания о сетевых протоколах обмена данными, об устройстве ядра операционной системы UNIXкасательно организации сетевой инфраструктуры; были получены некоторые сведения из теории массового обслуживания касательно организации систем массового обслуживания; были усовершенствованы навыки программирования на объектно-ориентированном языке высокого уровня C++ с использованием фреймворка Ultimate+ + ;были получены навыки работы с некоторыми утилитами командной строки в операционной системе FreeBSD.



