2.6. Основной процесс обработки запроса¶
Роль connector
принимает запрос (объект) из системы-источника. Исходный
формат входящего объекта — JSON или XML, в зависимости от системы-источника.
Если экземпляров с ролью connector
несколько, выбор экземпляра и балансировка
нагрузки выполняется сервисом nginx
.
На роли connector
происходит первоначальная обработка (parsing) входящего
объекта: объект преобразуется в Lua-объект (Lua-таблицу) и направляется на роль
input_processor
.
Также для каждого запроса генерируется его UUID, по которому в дальнейшем можно
проследить весь путь объекта.
Дальнейший маршрут объекта определяется в соответствии с ключом маршрутизации
(routing_key
), который присваивается объекту на разных этапах его обработки.
Логика маршрутизации по ключу и порядок обработки объекта задается в
файле конфигурации системы config.yml
.
На роли input_processor
объект проходит через конвейеры обработки (pipelines,
пайплайны), которые определены в конфигурации config.yml.
Прежде всего выполняется классификация объекта. Если классификация успешна, объекту присваивается ключ маршрутизации, определяющий дальнейшие пайплайны для обработки.
Если задано в конфигурации, объект проходит обработку в других пайплайнах в соответствие с ключом маршрутизации.
Объект валидируется в соответствии с моделью данных.
Примечание
В случае, если указанный в конфигурации пайплайн не обнаружен, выполняется попытка найти в конфигурации и выполнить одноименную функцию.
Если на любом из этапов — 1, 2, 3 — происходит ошибка, объект отправляется в
ремонтную очередь. Информация об объектах в ремонтной очереди
с описанием ошибок
доступна администратору через web-интерфейс.
Если определена роль notifier
и настроена конфигурация mail server
и
subscribers
, подписчикам будет отправлено уведомление об ошибке.
Если классификация, обработка и валидация объекта прошли успешно, объекту
присваивается соответствующий routing_key
, и объект сохраняется на экземпляре
с ролью storage
. Тип сохраняемого объекта также определяется настройками в
config.yml
в соответствии с ключом маршрутизации объекта.
Дальнейшие возможные действия с сохраненными объектами:
запрашиваются внешними системами;
реплицируются во внешние системы;
действия с объектами в рамках задач;
удаление объектов.