Устойчивость на основе облака

Подсказка

Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.

Миниатюра обложки электронной книги Azure с Cloud Native .NET приложениями.

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

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

Распределенная облачная среда

Рис. 6-1. Нативная облачная распределенная среда

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

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

  • Неожиданная сетевая задержка — время, за которое запрос на обслуживание передается получателю и возвращается обратно.

  • Временные ошибки — кратковременные ошибки сетевого подключения.

  • Блокировка, вызванная длительной синхронной операцией.

  • Процесс хоста, который завершился с ошибкой, перезапущен или перемещен.

  • Перегруженная микрослужба, которая не может реагировать в течение короткого времени.

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

  • Сбои оборудования.

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

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