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

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. Объект валидируется в соответствии с моделью данных.

Примечание

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

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

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

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

Found what you were looking for?
Feedback