2. Руководство по эксплуатации / 2.5. Основной процесс обработки запроса
2. Руководство по эксплуатации / 2.5. Основной процесс обработки запроса

2.5. Основной процесс обработки запроса

2.5. Основной процесс обработки запроса

Роль connector принимает запрос (объект) из системы-источника. Исходный формат входящего объекта — JSON или XML, в зависимости от системы-источника. Если инстансов с ролью connector несколько, выбор инстанса и балансировка нагрузки выполняется сервисом nginx.

На роли connector происходит первоначальная обработка (parsing) входящего объекта: объект преобразуется в Lua-объект (Lua-таблицу) и направляется на роль input_processor. Также для каждого запроса генерируется его UUID, по которому в дальнейшем можно проследить весь путь объекта.

Дальнейший маршрут объекта определяется в соответствие с ключом маршрутизации (routing_key), который присваивается объекту на разных этапах его обработки. Логика маршрутизации по ключу и порядок обработки объекта задается в файле конфигурации системы config.yml.

На роли input_processor объект проходить через конвейеры обработки (pipelines, пайплайны), которые определены в конфигурации config.yml.

  1. Прежде всего выполняется классификация объекта. Если классификация успешна, объекту присваивается ключ маршрутизации, определяющий дальнейшие пайплайны для обработки.

  2. Если задано в конфигурации, объект проходит обработку в других пайплайнах в соответствие с ключом маршрутизации.

  3. Объект валидируется в соответствие с моделью данных.

Если на любом из этапов — a, b, c — происходит ошибка, объект остается в ремонтную очередь. Информация об объектах в ремонтной очереди с описанием ошибок доступна администратору через web-интерфейс. Если определена роль notifier и настроена конфигурация mail server и subscribers, подписчикам будет отправлена нотификация об ошибке.

Если классификация, обработка и валидация объекта прошли успешно, объекту присваивается соответствующий routing_key, и объект сохраняется на инстансе с ролью storage. Тип сохраняемого объекта также определяется настройками в config.yml в соответствие с ключом маршрутизации объекта.

Дальнейшие возможные действия с сохраненными объектами: