Описание компонентов Агредатора
В архитектуре платформы «Агредатор»
можно выделить три группы компонентов: инфраструктурная (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 | нет |