Top.Mail.Ru
2.6. Основной процесс обработки запроса | Tdg
Tarantool
Check out the new release 2.8
2. Руководство по эксплуатации 2.6. Основной процесс обработки запроса

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

Примечание

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

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

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

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