Шаблоны проектирования облака, поддерживающие надежность
При проектировании архитектур рабочих нагрузок следует использовать отраслевые шаблоны, которые решают распространенные проблемы. Шаблоны могут помочь вам сделать преднамеренный компромисс в рабочих нагрузках и оптимизировать для желаемого результата. Они также могут помочь снизить риски, связанные с конкретными проблемами, которые могут повлиять на безопасность, производительность, затраты и операции. Если они не будут устранены, эти риски в конечном итоге вызовут проблемы с надежностью. Эти шаблоны поддерживаются реальными возможностями, предназначены для облачных и операционных моделей и по своей сути не зависят от поставщиков. Использование хорошо известных шаблонов в качестве способа стандартизации структуры рабочей нагрузки является компонентом операционной эффективности.
Многие конструктивные шаблоны напрямую поддерживают один или несколько основных принципов архитектуры. Шаблоны проектирования, поддерживающие принцип надежности, определяют доступность рабочей нагрузки, самосохранение, восстановление, целостность данных и обработки, а также сдерживание неисправностей.
Конструктивные шаблоны для обеспечения надежности
В следующей таблице перечислены шаблоны облачного проектирования, которые поддерживают цели обеспечения надежности.
Модель | Сводка |
---|---|
Посредник | Инкапсулирует сетевые подключения и управляет ими, разгружая сквозные задачи, связанные с сетевым взаимодействием. Полученные вспомогательные службы инициируют обмен данными от имени клиента. Эта точка-посредник предоставляет возможность добавлять шаблоны надежности для сетевого взаимодействия, например повторная попытка или буферизация. |
Отдельные серверные части для каждого интерфейса | Индивидуализирует уровень служб рабочей нагрузки, создавая отдельные службы, которые являются эксклюзивными для определенного интерфейсного интерфейса. Из-за этого разделения неисправность на уровне служб, поддерживающем один клиент, может не повлиять на доступность доступа другого клиента. При разном обращении с различными клиентами можно определить приоритеты для обеспечения надежности на основе ожидаемых шаблонов клиентского доступа. |
Распределительный блок | Вводит преднамеренные и полные сегментации между компонентами для изоляции радиуса взрыва неисправностей. Эта стратегия изоляции сбоев пытается содержать ошибки только в переборки, в которой возникла проблема, предотвращая воздействие на другие переборки. |
Отдельно от кэша | Оптимизирует доступ к часто считываемым данным, вводя кэш, который заполняется по требованию. Затем кэш используется при последующих запросах тех же данных. Кэширование создает репликацию данных и может использоваться ограниченными способами для сохранения доступности часто используемых данных, если исходное хранилище данных временно недоступно. Кроме того, при наличии неисправности в кэше рабочая нагрузка может вернуться в исходное хранилище данных. |
Автоматическое выключение | Предотвращает непрерывные запросы к неисправной или недоступной зависимости. Таким образом, этот шаблон предотвращает перегрузку зависимости, создающей сбой. Этот шаблон также можно использовать для активации корректного снижения производительности рабочей нагрузки. Размыкатели цепи часто используются в сочетании с автоматическим восстановлением для обеспечения как самосохранения, так и самовосстановления. |
Проверка утверждений | Отделяет данные от потока обмена сообщениями, предоставляя способ отдельно получить данные, связанные с сообщением. Шины сообщений не обеспечивают такую же надежность и аварийное восстановление, которые часто присутствуют в выделенных хранилищах данных, поэтому отделение данных от сообщения может повысить надежность базовых данных. Такое разделение также позволяет использовать подход к восстановлению очереди сообщений после аварии. |
Компенсирующие транзакции | Предоставляет механизм восстановления после сбоев путем отмены последствий ранее примененных действий. Этот шаблон устраняет неполадки в критически важных путях рабочей нагрузки с помощью действий компенсации, которые могут включать такие процессы, как прямой откат изменений данных, нарушение блокировки транзакций или даже выполнение собственного поведения системы, чтобы обратить вспять эффект. |
Конкурирующие потребители | Применяет распределенную и параллельную обработку для эффективной обработки элементов в очереди. Эта модель создает избыточность при обработке очередей, рассматривая потребителей как реплики, поэтому сбой экземпляра не мешает другим потребителям обрабатывать сообщения очереди. |
Источник событий | Обрабатывает изменение состояния как последовательность событий, записывая их в неизменяемый журнал только для добавления. Этот шаблон можно использовать, если надежный журнал изменений имеет решающее значение в сложном бизнес-процессе. Это также упрощает восстановление состояния, если требуется восстановить хранилища состояний. |
Федеративная идентификация | Делегирует доверие поставщику удостоверений, который является внешним для рабочей нагрузки для управления пользователями и обеспечения проверки подлинности для приложения. Разгрузка управления пользователями и проверки подлинности приводит к переходу к надежности этих компонентов поставщику удостоверений, который обычно имеет высокий уровень обслуживания. Кроме того, во время аварийного восстановления рабочей нагрузки компоненты проверки подлинности, вероятно, не нужно рассматривать в рамках плана восстановления рабочей нагрузки. |
Агрегирование на шлюзе | Упрощает взаимодействие клиента с рабочей нагрузкой, агрегируя вызовы нескольких внутренних служб в одном запросе. Эта топология позволяет перенести обработку временных сбоев из распределенной реализации на клиентах в централизованную реализацию. |
Перенесение в шлюз | Разгружает обработку запросов на устройство шлюза до и после перенаправления запроса на внутренний узел. Разгрузка этой ответственности на шлюз снижает сложность кода приложения на внутренних узлах. В некоторых случаях разгрузка полностью заменяет функциональные возможности надежной функцией, предоставляемой платформой. |
Маршрутизация шлюза | Направляет входящие сетевые запросы в различные серверные системы на основе намерений запросов, бизнес-логики и доступности серверной части. Маршрутизация шлюза позволяет направлять трафик только на работоспособные узлы в системе. |
Геоузел | Развертывает системы, работающие в режимах доступности "активный — активный" в нескольких географических регионах. Этот шаблон использует репликацию данных для поддержки идеального способа подключения любого клиента к любому географическому экземпляру. Это может помочь рабочей нагрузке выдержать один или несколько региональных простоев. |
Мониторинг конечных точек работоспособности | Предоставляет способ мониторинга работоспособности или состояния системы, предоставляя конечную точку, специально разработанную для этой цели. Эту конечную точку можно использовать для управления работоспособностью рабочей нагрузки, а также для создания оповещений и панелей мониторинга. Вы также можете использовать его в качестве сигнала для самовосстановления исправления. |
Таблица индексов | Оптимизирует извлечение данных в распределенных хранилищах данных, позволяя клиентам искать метаданные, чтобы данные можно было извлекать напрямую, избегая необходимости выполнять полные проверки хранилища данных. Так как клиенты указываются на сегмент, секцию или конечную точку в процессе поиска, этот шаблон можно использовать для упрощения отработки отказа при доступе к данным. |
Выбор лидера | Устанавливает лидера экземпляров распределенного приложения. Руководитель координирует обязанности, связанные с достижением цели. Этот шаблон устраняет последствия неисправностей узлов, надежно перенаправляя работу. Он также реализует отработку отказа с помощью алгоритмов консенсуса, когда лидер не работает. |
Каналы и фильтры | Разбивает сложную обработку данных на ряд независимых этапов для достижения определенного результата. Единая ответственность каждого этапа позволяет сосредоточить внимание и избежать отвлекающих факторов при обработке данных. |
Очередь с приоритетом | Обеспечивает обработку и завершение элементов с более высоким приоритетом перед элементами с более низким приоритетом. Разделение элементов на основе приоритета бизнеса позволяет сосредоточить усилия по обеспечению надежности на наиболее важных задачах. |
Издатель/Подписчик | Отделяет компоненты архитектуры, заменяя прямой обмен данными между клиентом и службами на обмен данными через посредник сообщений или шину событий. |
Выравнивание нагрузки на основе очередей | Управляет уровнем входящих запросов или задач, помещая их в буфер в очередь и позволяя обработчику очереди обрабатывать их в контролируемом темпе. Такой подход может обеспечить устойчивость к внезапным всплескам спроса, отсоздая поступление задач от их обработки. Он также может изолировать неисправности в обработке очередей, чтобы они не влияли на потребление. |
Ограничение скорости | Управляет скоростью клиентских запросов, чтобы уменьшить количество ошибок регулирования и избежать неограниченных сценариев повторных попыток при возникновении ошибок. Эта тактика защищает клиента, признавая ограничения и затраты на обмен данными со службой, если служба предназначена для того, чтобы избежать достижения указанных ограничений. Он управляет количеством и (или) размером операций, отправляемых в службу в течение определенного периода времени. |
Повторные попытки | Устранены сбои, которые могут быть временными или периодическими, путем повторных попыток выполнения определенных операций контролируемым способом. Устранение временных сбоев в распределенной системе является ключевым методом повышения устойчивости рабочей нагрузки. |
Саги — распределенные транзакции | Координирует длительные и потенциально сложные транзакции, разбивая работу на последовательности небольших независимых транзакций. Каждая транзакция также должна иметь компенсирующие действия, чтобы обратить вспять сбои при выполнении и сохранить целостность. Так как монолитные транзакции в нескольких распределенных системах обычно невозможны, этот шаблон обеспечивает согласованность и надежность за счет реализации атомарности и компенсации. |
Планировщик, агент, контролер | Эффективно распределяет и перераспределяет задачи в системе на основе факторов, наблюдаемых в системе. Этот шаблон использует метрики работоспособности для обнаружения сбоев и перенаправления задач в работоспособный агент, чтобы уменьшить последствия неисправности. |
Последовательная передача | Поддерживает одновременный входящий трафик обмена сообщениями, а также поддерживает обработку в определенном порядке. Этот шаблон может исключить состояния гонки, которые трудно устранить, обработку спорных сообщений или другие обходные пути для неправильно упорядоченных сообщений, которые могут привести к сбоям. |
Сегментирование | Направляет загрузку в определенное логическое назначение для обработки конкретного запроса, обеспечивая совместное размещение для оптимизации. Так как данные или обработка изолированы для сегмента, неисправность в одном сегменте остается изолированной для этого сегмента. |
Подавление | Предоставляет подход к систематической замене компонентов работающей системы новыми компонентами, часто во время миграции или модернизации системы. Инкрементный подход этого шаблона может помочь снизить риски во время перехода. |
Регулирование | Накладывает ограничения на скорость или пропускную способность входящих запросов к ресурсу или компоненту. Вы можете разработать ограничения, чтобы предотвратить нехватку ресурсов, которая может привести к сбоям. Этот шаблон также можно использовать в качестве механизма управления в корректном плане деградации. |
Дальнейшие действия
Ознакомьтесь с шаблонами проектирования облака, которые поддерживают другие основные аспекты Azure Well-Architected Framework: