Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устойчивые задачи — это технология Майкрософт для создания рабочих процессов и оркестрации в виде обычного кода, который автоматически выживает сбои. Вместо управления сложной логикой повторных попыток, конечными автоматами или очередями сообщений вы выражаете вашу бизнес-логику в виде простых функций — Durable Task обрабатывает сохраняемость состояния, автоматическое восстановление и распределенную координацию для вас.
Рабочие процессы могут выполняться в течение нескольких часов, дней или даже месяцев, надежно возобновляясь с последнего завершенного шага после любого сбоя, перезапуска или повторного развертывания. Распространенные варианты использования включают распределенные транзакции, оркестрацию ИИ с несколькими агентами, конвейеры обработки данных и управление инфраструктурой.
Устойчивые задачи охватывают:
- Пакеты SDK для устойчивых задач для локальных приложений.
- Устойчивые функции для бессерверного размещения на Функции Azure
- Планировщик устойчивых задач— полностью управляемая серверная служба, созданная для устойчивых рабочих нагрузок.
Замечание
Устойчивое выполнение — это отраслевой подход к повышению отказоустойчивости обычного кода за счет автоматического сохранения его прогресса. Устойчивые задачи — это реализация устойчивого выполнения от Майкрософт.
Основные варианты использования
Durable Task подходит для многих сценариев разработки, в том числе:
- Длительные процессы. Устойчивые задачи могут управлять состоянием и прогрессом для процессов, которые выполняются в течение длительного периода времени, даже в случае прерываний или ошибок. Примеры включают обработку заказов, конвейеры данных, обучение модели машинного обучения и длительные имитации.
- Сценарии параллельного выполнения и разветвления/свёртки: Durable Task может координировать работу, которая распараллеливается между различными рабочими процессами на разных компьютерах и затем объединяет результаты. Примеры включают обработку изображений, задания для уменьшения карты и рабочие процессы ETL.
- Оркестрация микросервисов и API: Durable Task может координировать работу между распределенными службами, API и машинами со сложным потоком управления и обработкой ошибок. "Durable Task" также позволяет реализовать распределенные транзакции с использованием шаблона саги, где каждый шаг имеет компенсирующую логику, которая автоматически запускается, если более поздний шаг завершается ошибкой.
- Автоматизация бизнес-процессов: Durable Task позволяет автоматизировать сложные детерминированные бизнес-процессы, которые включают множество шагов и зависимостей, вовлечение человека в процесс и обработку ошибок в течение длительного времени. К примерам относятся управление цепочкой поставок, проверка документов, подключение клиентов и проверка удостоверений.
- Автоматизация инфраструктуры. Устойчивые задачи могут управлять подготовкой инфраструктуры, конфигурацией и развертыванием с помощью сложных зависимостей и обработки ошибок. Примерами являются управление облачными ресурсами и конвейеры CI/CD.
- Оркестрация с несколькими агентами: Durable Task может координировать работу, выполняемую несколькими агентами ИИ, обеспечивая надежное выполнение задач на длительных промежутках времени и эффективное использование токенов для сложных многошаговых процессов ИИ. Примеры включают агенты ИИ для глубокого исследования, написания кода и поддержки клиентов.
Общей темой в этих сценариях является то, что они включают работу, которая является слишком сложной, слишком продолжительной или слишком распределенной, чтобы управлять ею надежно с помощью временного кода. "Durable Task" предоставляет базовые гарантии — сохраняемость, отказоустойчивость и координацию с состоянием, поэтому вы можете выразить эту работу как понятный код.
Поддерживаемые языки и модели размещения
Устойчивые задачи поддерживают несколько языков программирования в двух моделях размещения: Функции Azure (с помощью расширения Устойчивые функции) и размещенных самостоятельно (через автономные пакеты SDK для устойчивых задач). Модель размещения Функции Azure предоставляет полностью управляемую бессерверную среду вычислений со встроенными функциями масштабирования и оркестрации, а размещенной самостоятельно модели позволяет запускать устойчивые приложения на любой вычислительной платформе, например Контейнеры приложений Azure, Служба Azure Kubernetes, Служба приложений Azure или виртуальные машины.
| Язык | Функции Azure | Самостоятельный хостинг |
|---|---|---|
| .NET (C#/F#) | ✅ | ✅ |
| JavaScript/TypeScript | ✅ | ✅ |
| Python | ✅ | ✅ |
| Java | ✅ | ✅ |
| PowerShell | ✅ | ❌ |
Замечание
Go также доступен как поддерживаемый сообществом пакет SDK с открытым исходным кодом для локальных сценариев, но в настоящее время находится на экспериментальных этапах и еще не рекомендуется для использования в рабочей среде.
Рекомендации по выбору между Функции Azure и самостоятельно размещённым размещением см. в разделе Выбор вашей модели размещения.
Компоненты архитектуры
Устойчивые задачи имеют два основных уровня: пакет SDK , используемый в коде приложения, и серверную часть хранилища состояний , которая управляет состоянием.
Пакет SDK для устойчивых задач
Пакет SDK для устойчивых задач — это инструмент, который вы используете для создания оркестровок, действий и сущностей в коде вашего приложения. Он внутренне управляет механизмом устойчивого выполнения — повторением функций оркестратора, управлением контекстом локального выполнения и взаимодействием с сервером хранения состояния. Durable Task предлагает несколько вариантов SDK для различных языков программирования и моделей размещения, упомянутых ранее.
Рекомендации по выбору этих параметров см. в разделе "Выбор модели размещения".
Серверная часть хранилища состояний
Бэкенд хранилища состояний обеспечивает сохранение состояния оркестрации, поддержание журнала выполнения и координацию масштабирования в распределённых вычислительных системах.
Рекомендуемый вариант хранилища состояний — это планировщик задач Durable Task Scheduler — полностью управляемая служба Azure, специально созданная и высоко оптимизированная для рабочих нагрузок устойчивых задач. Он работает как с Устойчивые функции, так и с автономными пакетами SDK для устойчивых задач и предоставляет самый широкий набор функций без инфраструктуры хранилища для управления.
Кроме того, Устойчивые функции поддерживает несколько вариантов хранилища в формате "принеси своё" (BYO). Это дает вам больше контроля над тем, где хранится состояние, но требуется подготовить базовую инфраструктуру и управлять ею самостоятельно. В настоящее время хранилища BYO доступны только с Устойчивые функции.
Дополнительные сведения о вариантах хранения см. в разделе "Поставщики службы хранилища".
Дополнительные ресурсы
Исследовательские публикации
Durable Task разрабатывается в сотрудничестве с Майкрософт Research. В результате команда активно создает исследовательские документы и артефакты, в том числе:
- Устойчивые функции: семантика для бессерверных с поддержкой состояния(OOPSLA'21)
- Безсерверные рабочие процессы с Устойчивые функции и Netherite(препринт)
Видеообзор
В следующем видео рассматриваются преимущества Azure Устойчивые функции.