Шаблоны проектирования архитектуры, поддерживающие эффективность производительности

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

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

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

Рисунок Сводка
Асинхронный запрос-ответ Повышает скорость реагирования и масштабируемость систем путем отмены этапов взаимодействия запросов и ответов для процессов, которые не нуждаются в немедленных ответах. Используя асинхронный шаблон, можно максимально увеличить параллелизм на стороне сервера. Этот шаблон можно использовать для планирования работы в качестве разрешенной емкости.
Серверные части для интерфейсов Отделяет уровень служб рабочей нагрузки путем создания отдельных служб, которые являются эксклюзивными для определенного интерфейсного интерфейса. Это разделение позволяет оптимизировать способы, которые могут быть недоступны с общим уровнем служб. При обработке отдельных клиентов по-разному можно оптимизировать производительность для ограничений и функциональных возможностей конкретного клиента.
Переборка Представляет сегментацию между компонентами, чтобы изолировать радиус взрыва сбоев. Эта конструкция позволяет каждому переборку быть по отдельности масштабируемой для удовлетворения потребностей задачи, которая инкапсулируется в переборке.
В сторону кэша Оптимизирует доступ к часто считываемым данным, введя кэш, заполненный по требованию. Затем кэш используется при последующих запросах для тех же данных. Этот шаблон особенно полезен с большим объемом данных, которые часто не изменяются и могут терпеть определенное количество устаревших данных. Цель этой реализации заключается в том, чтобы обеспечить более высокую производительность в системе, выгрузив этот тип данных в кэш, а не источник его из своего хранилища данных.
Хореография Координирует поведение автономных распределенных компонентов в рабочей нагрузке с помощью децентрализованной, управляемой событиями связи. Этот шаблон может предоставить альтернативу при возникновении узких мест производительности в централизованной топологии оркестрации.
Средство разбиения цепи Предотвращает непрерывные запросы к неисправной или недоступной зависимости. Повторный подход к ошибке может привести к чрезмерному использованию ресурсов во время восстановления зависимостей, а также может перегружать производительность в зависимости, которая пытается восстановить.
Проверка утверждений Отделяет данные от потока обмена сообщениями, предоставляя способ отдельно получить данные, связанные с сообщением. Этот шаблон повышает эффективность и производительность издателей сообщений, подписчиков и самой шины сообщений, когда система обрабатывает большие полезные данные. Он работает путем уменьшения размера сообщений и обеспечения того, чтобы потребители извлекли полезные данные только в случае необходимости и в удобное время.
Конкурирующие потребители Применяет распределенную и параллельную обработку для эффективной обработки элементов в очереди. Эта модель поддерживает распределение нагрузки по всем узлам потребителей и динамическому масштабированию, основанному на глубине очереди.
Консолидация вычислительных ресурсов Оптимизирует и объединяет вычислительные ресурсы путем увеличения плотности. Этот шаблон объединяет несколько приложений или компонентов рабочей нагрузки в общей инфраструктуре. Эта консолидация обеспечивает максимальное использование вычислительных ресурсов с помощью резервной емкости узла для уменьшения избыточной подготовки. Оркестраторы контейнеров являются общим примером. Крупные (вертикально масштабируемые) вычислительные экземпляры часто используются в пуле ресурсов для этих инфраструктур.
Разделение обязанностей команд и запросов (CQRS) Отделяет операции чтения и записи модели данных приложения. Это разделение обеспечивает целевую производительность и оптимизацию масштабирования для конкретной цели каждой операции. Эта конструкция наиболее полезна в приложениях с высоким соотношением операций чтения и записи.
Метки развертывания Предоставляет подход к выпуску определенной версии приложения и его инфраструктуры в качестве управляемой единицы развертывания, исходя из предположения, что те же или разные версии будут развертываться одновременно. Этот шаблон часто соответствует определенным единицам масштабирования в рабочей нагрузке: так как дополнительная емкость требуется за пределами одного единицы масштабирования, для масштабирования развертывается дополнительная метка развертывания.
Выбор событий Обрабатывает изменение состояния как ряд событий, захватывая их в неизменяемом журнале только для добавления. В зависимости от рабочей нагрузки этот шаблон, как правило, в сочетании с CQRS, соответствующим дизайном домена и стратегическим моментальным снимком, может повысить производительность. Улучшения производительности обусловлены атомарными операциями только для добавления и предотвращения блокировки базы данных для операций записи и чтения.
Федеративное удостоверение Делегирует доверие поставщику удостоверений, который является внешним для рабочей нагрузки для управления пользователями и предоставления проверки подлинности для приложения. При разгрузке управления пользователями и проверки подлинности вы можете выделить ресурсы приложения другим приоритетам.
Привратник Выгрузит обработку запросов, которая специально предназначена для обеспечения безопасности и контроля доступа до и после переадресации запроса на внутренний узел. Этот шаблон часто используется для реализации регулирования на уровне шлюза, а не реализации проверок скорости на уровне узла. Состояние скорости координации между всеми узлами по сути не выполняется.
Агрегирование шлюза Упрощает взаимодействие клиента с рабочей нагрузкой, агрегируя вызовы к нескольким внутренним службам в одном запросе. Эта конструкция может снизить задержку, чем конструктор, в котором клиент устанавливает несколько подключений. Кэширование также распространено в реализациях агрегирования, так как она сводит к минимуму вызовы внутренних систем.
Перенесение в шлюз Выгружает обработку запросов на устройство шлюза до и после переадресации запроса на внутренний узел. Добавление шлюза разгрузки в процесс запроса позволяет использовать меньше ресурсов на узел, так как функции централизованно используются в шлюзе. Вы можете оптимизировать реализацию отключенных функций независимо от кода приложения. Отключенные функции, предоставляемые платформой, уже могут быть высокопроизводительными.
Маршрутизация шлюза Направляет входящие сетевые запросы в различные серверные системы на основе намерений запросов, бизнес-логики и доступности серверной части. Маршрутизация шлюза позволяет распределять трафик между узлами в системе для балансировки нагрузки.
Жеода Развертывает системы, работающие в режимах доступности active-active в нескольких географических регионах. Этот шаблон использует репликацию данных для поддержки идеала, который любой клиент может подключаться к любому географическому экземпляру. Его можно использовать для обслуживания приложения из региона, ближайшего к базе распределенных пользователей. Это снижает задержку, устраняя длительный трафик и так как вы используете инфраструктуру только для пользователей, использующих ту же геодоку.
Мониторинг конечной точки работоспособности Предоставляет способ мониторинга работоспособности или состояния системы, предоставляя конечную точку, специально разработанную для этой цели. Эти конечные точки можно использовать для улучшения балансировки нагрузки путем маршрутизации трафика только узлам, которые проверяются как работоспособные. С дополнительной конфигурацией можно также получить метрики по доступной емкости узла.
Таблица индексов Оптимизирует получение данных в распределенных хранилищах данных, позволяя клиентам искать метаданные, чтобы их можно было получить напрямую, избегая выполнения полного сканирования хранилища данных. Клиенты указывают на сегменты, секции или конечную точку, которые могут включать динамическое секционирование данных для оптимизации производительности.
Материализованное представление Использует предварительно вычисляемые представления данных для оптимизации извлечения данных. Материализованные представления хранят результаты сложных вычислений или запросов, не требуя повторной компиляции ядра СУБД или клиента для каждого запроса. Эта конструкция снижает общее потребление ресурсов.
Очередь приоритета Гарантирует, что элементы с более высоким приоритетом обрабатываются и завершаются до элементов с более низким приоритетом. Разделение элементов на основе приоритета бизнеса позволяет сосредоточить усилия на производительности на наиболее чувствительных к времени работах.
Издатель/Подписчик Отделяет компоненты архитектуры путем замены прямого обмена данными между клиентами или клиентами через посредник сообщений или шину событий. Разделение издателей от потребителей позволяет оптимизировать вычисления и код специально для задачи, которую потребитель должен выполнить для конкретного сообщения.
Выравнивание нагрузки на основе очередей Управляет уровнем входящих запросов или задач, буферизируя их в очереди и позволяя обработчику очередей обрабатывать их в управляемом темпе. Этот подход позволяет намеренно разрабатывать производительность пропускной способности, так как потребление запросов не требует корреляции с скоростью обработки.
Руководитель агента планировщика Эффективно распределяет и распределяет задачи по системе на основе факторов, наблюдаемых в системе. В этом шаблоне используются метрики производительности и емкости для обнаружения текущих задач использования и маршрутизации в агент с емкостью. Вы также можете использовать его для определения приоритета выполнения более высокой приоритетной работы над более низкой приоритетной работой.
Сегментирование Направляет загрузку в определенное логическое назначение для обработки конкретного запроса, позволяя совместное размещение для оптимизации. При использовании сегментирования в стратегии масштабирования данные или обработка изолированы к сегменту, поэтому она конкурирует за ресурсы только с другими запросами, направленными на этот сегмент. Вы также можете использовать сегментирование для оптимизации на основе географического региона.
Коляска Расширяет функциональные возможности приложения путем инкапсулирования не-первичных или перекрестных задач в процессе компаньона, который существует вместе с основным приложением. Перекрестные задачи можно переместить в один процесс, который может масштабироваться в нескольких экземплярах основного процесса, что снижает необходимость развертывания повторяющихся функций для каждого экземпляра приложения.
Размещение статического содержимого Оптимизирует доставку статического содержимого клиентам рабочей нагрузки с помощью платформы размещения, предназначенной для этой цели. Отключение ответственности за внешний узел помогает снизить перегрузку и позволяет использовать платформу приложений только для доставки бизнес-логики.
Дросселирование Накладывает ограничения на скорость или пропускную способность входящих запросов к ресурсу или компоненту. Если система находится под высоким спросом, эта схема помогает снизить перегрузку, которая может привести к узким местам производительности. Вы также можете использовать его для упреждающего предотвращения шумных сценариев соседей.
Ключ камердинера Предоставляет доступ к ресурсу без использования промежуточного ресурса для прокси-сервера. При этом выгружает обработку как монопольную связь между клиентом и ресурсом, не требуя компонента посла, который должен обрабатывать все клиентские запросы в режиме выполнения. Преимущество использования этого шаблона наиболее важно, если прокси-сервер не добавляет значение в транзакцию.

Дальнейшие шаги

Ознакомьтесь с шаблонами проектирования архитектуры, которые поддерживают другие основные компоненты Azure Well-Architected Framework: