Описание компонентов Агредатора

В архитектуре платформы «Агредатор» можно выделить три группы компонентов: инфраструктурная (infra), ядро (core) и сервисная (service) группа. Это деление является условным и обусловлено в первую очередь удобством обслуживания и сопровождения.

Инфраструктурная группа сервисов

В эту группу включаются компоненты, обеспечивающие основу функционирования системы: базы данных (PostgreSQL), брокер сообщений (RabbitMQ), Consul, Redis. Данные компоненты не являются частью платформы, а являются для неё “внешними”. В типовую схему развертывания платформы эти компоненты входят в виде сервисов (docker-контейнеров) с минимальными конфигурационными настройками. При необходимости эти компоненты могут запущены в иных конфигурациях (например кластеризованной) для обеспечения дополнительной надежности функционирования и/или сохранности данных. Поскольку сервисы обладают высокой степенью изолированности, то возможна настройка, при которой сервисы не только используют разные базы данных (в рамках одного СУБД), но и разные сервера СУБД. Также особенностью этой части системы является то, что она должна быть непосредственно видна из других частей (core, services).

Consul

Параметр Значение
Название consul
Описание ПО для хранения конфигурации, выполнения проверок доступности сервисов, а также service discovery: consul
Техническая информация Для взаимодействия требуется HTTP порт 8500.
Имеет административный web-интерфейс.
Хранит секретную информацию (например ключ СМЭВ.)
Все сервисы должны иметь возможность доступа к данному сервису.
Образ: docker.rnds.pro/aggredator-consul:latest
Используемые порты (протоколы) 8500 (HTTP) - api и web-интерфейс
8300-8302 - Служебные порты для кластеризации
Весь список
Требуется доступ (порт)  
stand-alone Может

Mq

Параметр Значение
Название mq
Описание Брокер сообщений RabbitMQ. Используется для обмена сообщениями между сервисами. Для аутентификации отправителя сообщения используются сертификаты сгенерированные admin сервисом
Техническая информация Имеет web-интерфейс, доступный на 15672 порту.
Почти все сервисы должны иметь возможность доступа к данному сервису, по имени хоста указанному в сертификате сервиса.
Образ: docker.rnds.pro/aggredator-mq:latest
Используемые порты (протоколы) 5671-5672 (TCP/TLS) - AMQP протокол
15672 (TCP/TLS) - web-интерфейс
Требуется доступ (порт) auth (80)
stand-alone Может
Требует дополнительной настройки: установки плагинов, сертификатов и сетевой связности с сервисом auth

Redis

Параметр Значение
Название redis
Описание ПО для хранения несущественной информации и организации кеша между компонентами системы
https://redis.io
Техническая информация Для взаимодействия требуется TCP порт 6379
Образ: docker.rnds.pro/aggredator-redis:latest
Используемые порты (протоколы) 6379 (TCP)
Требуется доступ (порт)  
stand-alone Может
Требует использования стандартного порта

Db

Параметр Значение
Название db
Описание База данных PostgreSQL используемая сервисами для хранения данных.
Техническая информация Используется сервисами для хранения данных. Для работоспособности системы требуется пользователь с правами создания баз данных.
Использует порт 5432.
Образ: docker.rnds.pro/aggredator-db:latest
Используемые порты (протоколы) 5432 (TCP)
Требуется доступ (порт)  
stand-alone Может

Сервисы, входящие в группу Core

Эта часть отвечает за общее функционирование системы. Все эти сервисы могут масштабироваться репликацией контейнеров, однако практическая необходимость может возникнуть только для сервиса router (который принимает все входящие сообщения на обращение к бизнес-сервисам системы). Необходимости запуска контейнеров на одной данной хост-машине нет - они могут быть запущены в любом месте откуда доступна часть infra, а в частности RabbitMq, Consul и база данных.

admin

Параметр Значение
Название admin
Описание Административная панель платформы «Агредатор». Требуется для мониторинга работоспособности системы и выполнения сопроводительных задач (создание сервисов, отправка контрольных запросов, получение логов)
Техническая информация Представляет собой web-приложение, реализованное на языке Ruby (Ruby on Rails)
Для взаимодействия использует HTTP порт 80
Имя БД по умолчанию: aggredator
Используемые порты (протоколы) 80 (HTTP) - web-интерфейс
Требуется доступ (порт) db (5432)
redis (6379)
stand-alone нет

router

Параметр Значение
Название router
Описание Сервис, принимающий входящие запросы от клиентских ИС и осуществляющий их квитирование и перенаправление
Техническая информация Представляет собой приложение на Ruby, использующее подключение к RabbitMQ
Имя БД по умолчанию: aggredator
Используемые порты (протоколы)  
Требуется доступ (порт) db (5432)
mq (5671)
redis (6379)
stand-alone нет

auth

Параметр Значение
Название auth
Описание Сервис разрешающий проведение действий в mq сервисе (публикацию сообщений, конфигурирование очередей, exchange, прослушивание очередей)
Техническая информация Представляет собой web-приложение, реализованное на языке Ruby (Rack)
Для взаимодействия использует HTTP порт 80
Имя БД по умолчанию: aggredator
Используемые порты (протоколы) 80 (HTTP)
Требуется доступ (порт) db (5432)
stand-alone нет

filator

Параметр Значение
Название filator
Описание Временное файловое хранилище с HTTP-интерфейсом. предназначено для передачи файлов между сервисами в процессе работы. Устаревший файлы удаляются через некоторое время.
Техническая информация Представляет собой web-приложение, реализованное на языке Ruby (Ruby on Rails)
Для взаимодействия использует HTTP порт 80
Имя БД по умолчанию: aggredator-filator
Используемые порты (протоколы) 80 (HTTP)
Требуется доступ (порт) db (5432)
redis (6379)
stand-alone нет

echo

Параметр Значение
Название echo
Описание Сервис, выполняющий эхо-ответ на входящее сообщение. Используется для проверки работоспособности системы.
Техническая информация Не хранит никакие данные
Используемые порты (протоколы)  
Требуется доступ (порт) mq (5671)
stand-alone нет

Сервисы, входящие в группу Services

В эту часть вынесены все бизнес-сервисы. Среднее потребление памяти одним сервисом составляет примерно 400 МБ под нагрузкой. Все сервисы имеют легкую возможность масштабирования путем репликации контейнеров. Ознакомиться с сервисами можно на примере smev3

smev3

Параметр Значение
Название smev3
Описание Сервис, обеспечивающий взаимодействие с федеральным СМЭВ 3. Получает xml вида сведений, сгенерированный прочими сервисами, формирует xml-конверт, подписывает его и отправляет в СМЭВ. Выполняет опрос на наличие ответа в клиентской очереди СМЭВ, получает ответ и отправляет стороннему сервису на обработку xml полученного вида сведений.
Выполняет опрос на наличие входящих запросов из СМЭВ, формирует xml-конверт ответа на полученный запрос, при получении данных от стороннего сервиса.
Техническая информация Представляет собой приложение, реализованное на языке Ruby.
Имя БД по умолчанию: aggredator-service-smev3
Используемые порты (протоколы)  
Требуется доступ (порт) mq (5671)
db (5432)
доступ к СМЭВ среде
(http://172.20.3.12:7500/ws?wsdl - для продуктовой,
http://smev3-n0.test.gosuslugi.ru:7500/ws?wsdl - для тестовой)
Доступ к сервисам подписания, если они используются (Signer, Jigner, УЭПШ)
stand-alone нет
  • Описание компонентов Агредатора
  • Инфраструктурная группа сервисов
  • Consul
  • Mq
  • Redis
  • Db
  • Сервисы, входящие в группу Core
  • admin
  • router
  • auth
  • filator
  • echo
  • Сервисы, входящие в группу Services
  • smev3
  • Подавай заявку сейчас

    Оставьте свои контактные данные и наш менеджер свяжется с вами в ближайшее время