Краткий обзор шаблона конвейеров и фильтров и аспектов, связанных с удобством использования.

Шаблон Каналы и фильтры — это основанный на компонентах архитектурный шаблон проектирования, позволяющий разлагать монолитный компонент на более мелкие независимые элементы, которые можно использовать повторно.

Постановка задачи

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

  1. Сильная связь. В зависимости от варианта использования некоторые задачи могут потребовать разные программные языки для простоты реализации.
  2. Ограничения по ресурсам. Для каждой задачи или группы задач могут потребоваться разные типы ресурсов, например, некоторые из них могут интенсивно использовать ЦП или память, в то время как другим может потребоваться специализированное оборудование.
  3. Низкая масштабируемость. Для каждой задачи может потребоваться различное количество экземпляров для корректной обработки.

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

Решение

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



Каждый меньший компонент можно собрать вместе, чтобы создать конвейер. Точно так же его можно использовать для создания нескольких конвейеров, каждый из которых приводит к разным конечным состояниям.

Давайте реализуем решение, используя шаблон каналов и фильтров.

Топологические ограничения

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

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

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

Проблемы и соображения

  1. Сложность. С повышением повторного использования и масштабируемости в конвейере могут возникнуть сложности. Решения должны обеспечивать надежность и идемпотентность конвейера. Любой вид дублирования может привести к повторному срабатыванию компонентов.
  2. Контекст и состояние. Каждый фильтр в конвейере работает изолированно. Любой вариант использования, связанный с зависимостью, должен иметь дело с достаточным контекстом, связанным с состоянием.

Удобство использования

Шаблон проектирования «трубы и фильтры» полезен только в следующих случаях:

  1. Более крупная задача может быть разбита на более мелкие несвязанные части.
  2. Система требует гибкости, и изменение этапов является частью функциональных требований.
  3. Распределение задач по нескольким серверам должно привести к повышению производительности и/или выгодности затрат.

Ссылки



Шаблон «Каналы и фильтры — Центр архитектуры Azure
Разложите задачу, выполняющую сложную обработку, на ряд отдельных элементов, которые можно использовать повторно. Это может…learn.microsoft.com»





Сводка

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

Спасибо ❤️ за то, что прочитали эту статью, не стесняйтесь Подписаться, хлопайте👏🏻 и делитесь ею.

От монолитного до компонуемого ПО с Bit

Инструмент с открытым исходным кодом Bit помогает более чем 250 000 разработчиков создавать приложения с компонентами.

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

Подробнее

Разделите приложения на компоненты, чтобы упростить разработку приложений, и наслаждайтесь наилучшими возможностями для рабочих процессов, которые вы хотите:

Микро-интерфейсы

Система дизайна

Совместное использование кода и повторное использование

Монорепо

Узнать больше