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