Разработка распределенной системы обмена уведомлениями на основе микросервисной архитектуры
Автор: Цебренко К.Н.
Журнал: Международный журнал гуманитарных и естественных наук @intjournal
Рубрика: Технические науки
Статья в выпуске: 8-1 (59), 2021 года.
Бесплатный доступ
Цель работы состоит в разработке распределённой системы для отправки уведомлений. В ходе выполнения работы разработаны алгоритмы работы микросервисов распределенной системы. Выполнена реализация микросервисов и их тестирование. Оценена эффективность работы системы в условиях предприятия.
Обмен уведомлениями, микросервисы, распределенная система, алгоритм, реализация
Короткий адрес: https://sciup.org/170189186
IDR: 170189186 | DOI: 10.24412/2500-1000-2021-8-1-119-122
Текст научной статьи Разработка распределенной системы обмена уведомлениями на основе микросервисной архитектуры
Актуальность темы обуславливается необходимостью автоматизировать рутинные действия по рассылке рассылка email и sms-уведомлений пользователям [1]. На данный момент каждый сервис самостоятельно отправляет уведомления, что приводит к задержкам в работе пользователя и усложняет обслуживание рассылок администраторам, так как настраивать контент уведомлений приходится отдельно для каждого сервиса. В работе [2] разработана концепция распределённой системы для отправки уведомлений на основе микро-сервисной архитектуры распределенной системы. Предложена общая схема работы распределённой системы. Обоснован выбор иехнологий и средств реализации разработки.
Цель работы состоит в разработке распределённой системы для отправки уведомлений на языке Golang. Задачи решаемые в ходе выполнения работы: разработка алгоритмов работы программ, реализация разработки, анализ эффективности разработки. Предметом исследования является разработка распределённой системы отправки уведомлений на языке Go.
В системе необходимо реализовать сле- дующие микросервисы: scheduler, builder, email-sender, sms-sender [2].
В процессе проектирования микросервисов необходимо разработать модели работы их программной части [3]. Можно использовать высокоуровневое моделирование как в работе [4] и построить гибридную модель модулей подсистемы [5]. Однако, для получения модели сложной подсистемы [6] с точностью до действия удобнее воспользоваться низкоуровневыми методами моделирования. Для составления блок-схем, отражающих работу разрабатываемых алгоритмов, использованы инструменты для создания диаграмм и блок-схем (Microsoft Visio).
Как было сказано выше, scheduler – это основная точка входа в систему и маршрутизатор сообщений по очередям других микросервисов. Он консолидирует всю информацию о уведомлениях, решает какому микросервису дать обработку уведомления в определённом состоянии и записывает информацию о обработке уведомлений в базу данных.
На рисунке 1 представлена блок схема алгоритма работы микросервиса scheduler.

Рис. 1. Блок-схема работы микросервиса scheduler
Микросервис builder предназначен для сборки уведомления из готовых шаблонов, путём замены специальных маркеров на передаваемые данные. Шаблоны email отличаются от версии для sms наличием HTML-верстки, тогда как для sms используется обычный текст, соответственно для разных типов уведомлений используются разные файлы шаблонов, было принято добавлять в конце имени sms шаблона суффикс sms.
Передаваемые параметры сериализуются в тип данных Json, если при десериализация параметров произойдёт ошибка, микросервис вернёт уведомление обратно в очередь scheduler с состоянием “fail”.
При успешной сборке шаблона, он будет передан в очередь scheduler с состоянием “builded”.
Микросервис email-sender предназначен для отправки собранного уведомления электронной почты в smtp-шлюз. В роли шлюза можно использовать SMTP-сервер, бесплатно предоставляемый компанией Яндекс, зарекомендовавший себя как ста- бильный и довольно производительный сервер отправки электронной почты. Микросервис производит соединение с smtp-сервером в зашифрованном TLS-режиме и отправляет в него подготовленное уведомление
Каждое действие микросервиса записывается в лог файл, при ошибках уведомление возвращается в очередь schedulerqueue в состоянии “fail”, при успехе в состоянии “success”.
Микросервис sms-sender предназначен для отправки собранного sms уведомления в http-шлюз. В роли шлюза использован российский сервис отправки смс сообщений SMSRU.
Каждое действие микросервиса записывается в лог файл, при ошибках уведомление возвращается в очередь schedulerqueue в состоянии “fail”, при успешной обработке в состоянии “success”.
При реализации алгоритмов использован компилятор языка go 1.15 с официального сайта проекта Для создания микросервисов системы, реализован способ конфигурирования запускаемых приложений. Для этого разработан пакет с именем config, в котором реализованы функции конфигурирования микросервисов. Для определения и хранения конфигурационных определены переменными окружения, которые хранятся в env-файле. В корне приложения файл с именем «.env» содержит все необходимые параметры: параметры подключения к базе данных, параметры для соединения с брокером rabbitMq, имена очередей, необходимых для работы микросервису, параметры соединения с smtp-сервером, параметры соединения с сервисом отправки sms. На серверах предприятия данный файл наполняется автоматически из хра- нилищ в соответствии с запускаемым окружением.
После реализации исходного кода описанных сервисов выполнена разработка автоматических тестов. Язык Go содержит в себе встроенный пакет и набор утилит для автоматических тестов. Чтобы разработать тест функций программы, необходимо создать файл с именем тестируемого пакета и суффиксом «_test». Код этих файлов не используется при сборке приложения, тесты запускаются по команде go test. Исходный код автоматических тестов позволил выполнить проверку работоспособности приложения.
В работе реализована разработка микросервисов, составляющих распределённую систему отправки уведомлений. Проведён анализ эффективности внедрения результата работы на примере предприятия. Система решает задачи по отправке рассылок уведомлений в виде электронной почты и смс сообщений на предприятии и минимизируют сбои в работе сервисов компании, использующих рассылку уведомлений. Система показала высокую эффективность готова к внедрению на предприятиях различного профиля в качестве средства автоматизации рассылки уведомлений пользователям.
Список литературы Разработка распределенной системы обмена уведомлениями на основе микросервисной архитектуры
- Фролов Р.Н. Информатизация современного российского общества: социально-экономические и правовые аспекты // Информационные ресурсы России. - 2020. - №4 (176). - С. 26-29.
- Цебренко К.Н. Распределенная система обмена уведомлениями // Вестник ИМСИТ. - 2021. - №2 (86). - С. 39-42.
- Саакян Р.Р. Моделирование электронной информационно-образовательной среды образовательной организации// Информационные ресурсы России. - 2019. - № 5. - С. 25-29.
- Цебренко К.Н. Моделирование подсистемы автоматизации технологических процессов и учета в информационных системах медицинских лабораторий // Вестник ИМСИТ. - 2017. - №3 (71). - С. 31-34.
- Цебренко К.Н. Гибридное моделирование информационной системы агентства недвижимости // Естественно-гуманитарные исследования. - 2017. - № 17 (3). - С. 28-34.
- Саакян Р.Р. Проектирование информационной системы мониторинга и распределения заказов курьерской службы на основе машинного обучения // Информационные ресурсы России. - 2020. - №3. - С. 34-38.