Проектирование для обеспечения устойчивости

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

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

Пример сценария

Contoso Air — это коммерческая авиакомпания, которая имеет собственный отдел разработки. Основное бизнес-приложение — это решение для бронирования, которое позволяет клиентам забронировать рейсы непосредственно с помощью Contoso Air. Приложение встроено в Azure и использует службу приложение Azure, Cosmos DB, Функции Azure, Azure Logic Apps и Служебная шина Azure.

Определите риски сбоя.

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

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

Задача Компании Contoso

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

Применение подхода и результатов

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

Реализация механизмов самосохранения

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

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

Задача Компании Contoso

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

Применение подхода и результатов

  • Команда разрабатывает пользовательскую логику в потоке, чтобы повторить транзакцию после короткой задержки, когда обнаружен сбой, который может быть обнаружен.
  • Проект решения будет изменен, чтобы включить шаблон повторных попыток, немного увеличивая время ожидания между повторными попытками до тех пор, пока запрос не будет успешно обработан или достигнуто максимальное количество сбоев.
  • Команда также решает разделить взаимодействие пользователей и функции внутренней обработки платежей этого потока с помощью подхода на основе событий с Служебная шина Azure. Если при обработке сообщения возникают неустранимые сбои (после максимального количества повторных попыток), серверный обработчик отказывается от обработки этого запроса, оставляя сообщение в очереди, чтобы его можно было повторно обработать позже.

Создание комплексной избыточности и устойчивости

Создайте избыточность на уровнях и устойчивости на различных уровнях приложений.

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

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

Задача Компании Contoso

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

Применение подхода и результатов

  • Команда решает обновить до служебная шина уровня "Премиум". Таким образом, они могут воспользоваться преимуществами Зоны доступности поддержки этого уровня. Благодаря этой функции несколько копий данных хранятся в трех физически разделенных объектах (зонах доступности), а служба имеет достаточно резервов емкости, чтобы мгновенно справиться с полной, катастрофической потерей центра обработки данных.
  • Кроме того, команда настраивает Служебная шина Azure геоагентного восстановления для непрерывного реплика te данных в дополнительный регион, который будет использоваться в маловероятном случае полного сбоя основного региона.

Проверьте свои знания

1.

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

2.

Каков пример добавления избыточности в рабочую нагрузку?

3.

Команда рабочей нагрузки должна понять, как атака DDoS может повлиять на рабочую нагрузку. Что следует делать команде перед любым тестированием?