Services
Services - ядро программного комплекса. Состоит из нескольких сервисов:
Event Bus - сервис для получения, дессериализации и отправки сообщений.
Message Queue Handlers – обработчики клиентских событий, полученных от backend. Взаимодействие осуществляется через RabbitMQ.
Statistic collector – сборщик статистики.
DB sync – сервис для вызова периодических действий на SaltStack.
Task scheduler - планировщик действий.
Event Bus
Event Bus - сервис для получения и дессериализации сообщений от SaltStack. Для обработки и передачи сообщений используются модули Senders. Взаимодействие между SaltStack и Senders осуществляется через паттерн Publisher-Subscriber, где SaltStack - издатель, SaltStack Event System и Event Bus - шина событий, Sender - подписчик.
Получение данных от SaltStack Event System осуществляется через технологию SSE. После получения сообщения EventBus дессериализирует его и уведомляет Senders. Senders фильтруют, обрабатывают и отправляют сообщения.
Senders and Filters
Sender - модуль для фильтрации, обработки и отправки сообщений. Содержит внутри Filters для непосредственной фильтрации и обработки сообщений.
Классы, наследующие Filter:
ClientActionFilter - формирует сообщения для отправки Salt событий через MQ.
ClientHostInfoFilter - формирует сообщения для отправки данных мониторинга миньена через MQ.
DBActionFilter - формирует сообщения для отправки Salt событий в базу данных.
GroupIpFilter - возвращает IP адрес миньена после выполнение запроса для его определения.
HostFilter - формирует сообщение для создания/обновления миньена в базе данных.
KeyFilter - формирует сообщение для обновления ключа миньена в базе данных.
LastDistupgradeFilter - формирует сообщение для обновления поля "last_distupgrade" миньена в базе данных.
LastStateApplyFilter - формирует сообщение для обновления поля "last_stateapply" миньена в базе данных.
MinionStartFilter - формирует сообщение для обновления поля "status" миньена в базе данных.
PingFilter - формирует сообщения для обновления поля "status" миньенов в базе данных.
PresenceFilter - формирует сообщения для обновления поля "status" миньенов в базе данных.
CacheHostsFilter - формирует сообщения для создания/обновления миньенов в базе данных.
SeedHostsNodegroupFilter - формирует сообщения для обновления поля "nodegroups" миньенов в базе данных.
SeedNodegroupFilter - формирует сообщение для создания nodegroups в базе данных.
StateApplyFilter - формирует сообщение для создания failed-patches при неудачном выполнении "state.apply".
VersionFilter - формирует сообщение для обновления поля "version" миньена в базе данных.
Message Queue Handlers
Message Queue Handlers - обработчики клиентских событий, полученных от backend.
Взаимодействие осуществляется через RabbitMQ.
Statistic Collector
Statistic collector - сервис для сбора статистики. Принимает на вход имена коллекций, с которых необходимо собрать данные, и отправляет их в коллекцию statistics.
DB Sync
DB Sync - сервис для вызова периодических действий на SaltStack через salt-api.
Task Scheduler
Task Scheduler - сервис для выполнения пользовательских задач. Задача - это запрос к salt-api, который нужно выполнить. Задачи собираются из базы данных с помощью DB Adapter.