Трубы и фильтры (интеграционный паттерн)

Трубы и фильтры (интеграционный паттерн)

Технологии
Трубы и фильтры

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


Например, допустим, что в нашей компании поступает новый заказ в виде сообщения.

  • Первое требование: сообщение должно быть зашифровано, чтобы посторонние не могли подслушать заказ клиента.

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

  • Дополнительно: внешние системы могут случайно присылать дублированные сообщения (помните предупреждения на популярных сайтах «Нажимайте кнопку “Заказать” только один раз»?). Чтобы избежать повторных отправок и недовольных клиентов, дубликаты нужно отфильтровать до начала последующих шагов обработки заказа.

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

Трубы и фильтры

Используем архитектурный стиль Pipes and Filters (Трубы и Фильтры), чтобы разделить крупную задачу обработки на последовательность небольших, независимых шагов (Фильтров), соединённых каналами передачи данных (Трубами).

  • Фильтр имеет очень простой интерфейс: получает сообщения на входной трубе, обрабатывает их и отправляет результат на выходную трубу.

  • Труба соединяет один фильтр с другим, передавая сообщения дальше.

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

  • Можно добавлять новые фильтры, пропускать существующие или менять порядок, не меняя внутреннюю логику фильтров.

  • Соединение фильтра с трубой иногда называют портом.

  • В базовой версии каждый фильтр имеет один входной порт и один выходной порт.

Иными словами, Трубы и Фильтры превращают любую сложную обработку в модульный конвейер, где каждый шаг независим и легко переставляется.

Ключевые преимущества Труб и Фильтров