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 - подписчик.

../../../../_images/Event_bus.png

Получение данных от SaltStack Event System осуществляется через технологию SSE. После получения сообщения EventBus дессериализирует его и уведомляет Senders. Senders фильтруют, обрабатывают и отправляют сообщения.

Senders and Filters

Sender - модуль для фильтрации, обработки и отправки сообщений. Содержит внутри Filters для непосредственной фильтрации и обработки сообщений.

../../../../_images/Senders.png

Классы, наследующие 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.