Регистрация / Вход
Прислать материал

14.579.21.0069

Аннотация скачать
Постер скачать
Общие сведения
Номер
14.579.21.0069
Тематическое направление
Информационно-телекоммуникационные системы
Исполнитель проекта
Общество с ограниченной ответственностью "Флексби Солюшнс"
Название доклада
Контейнеризированная микросервисная архитектура для повышения производительности аналитических систем (BI) и разработки бизнес приложений.
Докладчик
Чёсов Роман Геннадьевич
Тезисы доклада
Цели и задачи исследования
Основными целями и задачами научного исследования являются:
1) Создание научно-технического задела, позволяющего разработать комплексную архитектуры подсистемы кэширования, которая будет способна работать с различными типами данных и нелинейной нагрузкой, использовать подходы интеллектуального выбора политик замещения данных в памяти, реализовывать многоуровневый распределенный кэш.
2) Разработка многоуровневой высокопроизводительной архитектуры для создания аналитических систем и систем управления предприятием.
3) Разработка технологии сборки клиентского приложения для различных платформ из одного исходного кода.
3) Разработка технологии контейнеризации и оркестрации контейнеров приложений с целью получения микросервисной архитектуры аналитических и бизнес систем.
Актуальность и новизна исследования
Постоянное увеличение объема данных снижает скорость их обработки и увеличивает время выполнения пользовательских запросов к аналитическим системам, что в свою очередь влияет на качество управленческих решений и снижает эффективность деятельности организаций в целом, что может приводить к серьезным последствиям, в таких отраслях экономики как финансовый сектор, торговля, транспорт, телеком и государственное управление.
Поэтому в настоящее время различными научными коллективами ведутся исследования в области увеличения производительности информационных аналитических систем. Основными направлениями повышения производительности являются: использование многоуровневой клиент серверной-архитектуры, создание системы кэширования данных, грид и облачные технологии.
Большинство представленных технологий предлагают решение определенной частной задачи, которая хорошо совместима с уже выпущенными решениями. Такой подход является ограниченным, так как многие технологические платформы начинались разрабатываться более 10 лет назад и уже в архитектурном плане являются устаревшими, так как при их проектировании не учитывалась необходимость обработки такого объема информации. В настоящее время наблюдается переход к облачным и контейнерным технологиям.
Как показывают исследования в настоящее время ведется активны поиск путей создания высокопроизводительных алгоритмов кэширования и их конкретного применения.
Базовые алгоритмы кэширования достаточно не плохо изучены, однако существует множество технологических сложностей их использования в условиях распределенных вычислительных сред, нелинейных пользовательских запросов, сетевых задержек, создания гибридных и адаптируемых алгоритмов.
Описание исследования

В рамках реализации ПНИ была разработана многоуровневая клиент серверная архитектура, которая была контейнеризирована с помощью технологии LXC на уровне ядра операционной системы (рисунок 1). 

Рисунок 1. Многоуровневая клиент серверная архитектура для создания контейнера приложений.

AJAX WebClient - WEB-клиент – это полнофункциональное JavaScript приложение, работающее под большинством современных браузеров, в том числе Chrome, Firefox, Safari и IE.

WEB-клиент взаимодействует с WebAPI посредством WEB-сервера с помощью отправки json запросов по протоколу http/https, эмулируя двухстороннее соединение, то есть отправка запросов возможна, как со стороны WEB-клиента, так и со стороны Web API. Эмуляция осуществляется с помощью последовательной отправки длительного GET запроса, на который WebAPI отвечает либо по таймауту, либо когда появляются данные, которые нужно передать на клиента. Отправка данных с WEB-клиента на WebAPI осуществляется с помощью коротких POST запросов.

WebServer

В качестве WEB-сервера используется web сервер Nginx (работает на порту :80 и :443). WEB сервер работает совместно с WebAPI адаптером для передачи пользовательских запросов серверу приложений через плагинный слой коммуникации. Кроме этого в задачи WEB-сервера приложений входит предоставление WEB-доступа к AJAX web-клиенту, задача аутентификации пользователей системы, распределение внешних запросов приходящих от AJAX web клиентов. 

Communication Plugins Layer

обеспечивает очередь внешних запросов, приходящих от AJAX web клиента, внешних систем по средствам подключения через различные протоколы (http POST/GET, STOMP/OpenWire), распределение запросов между серверами приложений и масштабирование системы, DTO преобразование входящих запросов/исходящих запросов. 

WebAPI

Обеспечивает возможность взаимодействия между WebServer и сервером приложений, обеспечивает управление очередями запросов. 

Application Server

Обеспечивает обработку DTO запросов, согласно бизнес логики, обеспечивает прикладной интерфейс разработчика, поддерживает подсистему кэширования, обеспечивает сериализацию классов бизнес логики в структуру таблиц базы данных, взаимодействует с базой данных через ODBC драйвер. Включает в себя интерфейс прикладной разработки на языке Python версии 2.7.3 и выше. 

Cache Subsystem - подсистема кэширования обеспечивающая реализацию политик замещения (LFU Cache; LRU Cache; PSEUDO LRU Cache; MRU Cache; SLRU (MRU+LRU); 2 way Cache (ассоциативный кэш); алгоритмы интеллектуального выбора политик замещения). 

StorageServer – отдельный сервер, обеспечивающий обработку запросов сервера приложений на действия с файлами и директориями (предоставления доступа, скачивание, загрузка, удаление, определение размера) взаимодействует с сервером приложений по протоколу WebDAV. 

DataBase Server (Сервер Баз Данных) - в качестве базы данных используется PostgreSQL, MSSQL и другие реляционные базы данных. С базой данных происходит взаимодействие только через сервер приложений по интерфейсу ODBC. В базе данных хранятся данные в виде таблиц. 

Контейнеризация многоуровневой клиент серверной архитектуры

На уровне единичного узла архитектуры были разработаны алгоритмы бизнес-логики (язык C++ и Python), которые позволяют управлять созданием, запуском, остановкой, резервным копированием, дублированием, удалением и обновлением отдельного узла архитектуры СОА.

Рисунок 2. Иерархия управления изолированным контейнером приложений СОА. 

Для управления изолированными контейнерами запускалось, разработанное высокоуровневое API (библиотека initsys), которое обеспечивает доступ к ядру контейнера для его управления.

На уровне host машины был разработан компонент ssn_manager, который с использованием высокоуровневого API предоставляет внешнему серверу управления доступ к функциям ядра linux, слою виртуализации (LXC), к виртуальному контейнеру и его сервисам через компонент initsys. Кроме этого ssn_manager manager обладает интерфейсами доступа к серверам файлового хранилища и веб-серверам для управления из единой консоли администратора.

Все компоненты облачной инфраструктуры взаимодействуют между собой по IP протоколу, что обеспечивает возможность размещения компонентов облака на физически и территориально распределенной инфраструктуре (рисунок 3).

Рисунок 3. Сетевая иерархия управления контейнерами.

 

Результаты исследования

Исследование алгоритмов кэширования в рамках исследования микросервисной архитектуры показали, что уменьшение среднего времени отклика системы в случае использования алгоритма LFU, LRU, PSEUDO LRU Cache, MRU, SLRU при достижении максимального количества возможных объектов в кэше данных примерно одинаково и составляет 3,7 раза по сравнению с минимальным количеством объектов. Ассоциативный кэш (2 Way Cache) показал наихудший результат и не является перспективным для использования в аналитических и бизнес системах. Среднее время отклика системы при максимальном размере кэша составляет примерно 0,012-0,014 секунды.

Среднее время отклика системы на том же самом наборе данных и пользовательских запросах без использования алгоритмов кэширования составляет 0,45 с. Минимальный размер кэша данных дает в уменьшении времени отклика системы практически в 10 раз при минимальном размере кэша. При больших размерах кэша, использование алгоритмов кэширования позволяет уменьшить время отклика системы более чем в 30 раз.

Если говорить о размере кэша данных, который не содержит практически всех объектов, то алгоритмы LFU и LRU показали лучший результат, уменьшение времени отклика системы достигает 20-25%. Если говорить об алгоритме интеллектуального выбора кэширования, то его значения наиболее близки к алгоритму LFU, по видимому в основном этот алгоритм и выбирается. Время отклика системы при использовании алгоритмом LFU и LRU практически не отличается.

Было также установлено, что на общую производительность системы влияет не только политика замещения (алгоритм выбора, что и когда вытеснять), но и алгоритм самого вытеснения, который находит необходимые объекты в области памяти и вытесняет. Само вытеснение является достаточно ресурсоёмкой задачей и требует дальнейшего исследования.

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

Тестирование поведения пользовательского интерфейса (клиента сервис ориентированной архитектуры) под различными браузерами и операционными системами показало совместимость со всеми требуемыми web браузерами и операционными системами. В работе компонент интерфейса не наблюдалось ни каких отклонений. Среднее время отклика пользовательского интерфейса составляет 80 мс, что на 20% лучше требований ТЗ.

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

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

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

Разработанная микросервисная архитектура позволила изолировать контейнер приложений, который может быть использован для создания сервисов бизнес приложений по модели SaaS на основе гибридной инфраструктуре публично-частного облака.