Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Durable Functions является расширением Azure Functions, которая добавляет возможности оркестрации с возможностью отслеживания состояния для вашего приложения-функции. Приложение Durable Functions состоит из различных функций Azure, каждая из которых играет определенную роль: оркестратор, действие, сущность или клиент. Эти роли соответствуют специализированным типам триггеров и биндингов, которые предоставляет расширение Durable Functions.
Пакеты Durable Task SDK позволяют создавать отказоустойчивые приложения с сохранением состояния на любой вычислительной платформе. Приложение определяет оркестраторы, действия и сущности как классы или функции, которые вы регистрируете в рабочей роли. Отдельный клиентский API позволяет запускать экземпляры оркестрации и управлять ими.
В следующей таблице приведены основные компоненты программирования и их роли:
| Компонент | Роль | Определяется по |
|---|---|---|
| Оркестратор | Координирует логику рабочего процесса | Триггер оркестрации |
| Activity | Выполняет одну единицу работы | Триггер действия |
| Сущность | Управляет небольшим элементом состояния | Триггер сущности |
| Client | Запуск и управление оркестрациями и сущностями | Устойчивая привязка клиента |
| Компонент | Роль | Определяется по |
|---|---|---|
| Оркестратор | Координирует логику рабочего процесса | Класс или функция, зарегистрированная в рабочей роли |
| Activity | Выполняет одну единицу работы | Класс или функция, зарегистрированная в рабочей роли |
| Сущность | Управляет небольшим элементом состояния | Класс, зарегистрированный у воркера |
| Client | Запуск и управление оркестрациями и сущностями |
DurableTaskClient API-интерфейс |
Оркестраторы
Оркестраторы определяют рабочий процесс: какие действия необходимо выполнить, в каком порядке и как обрабатывать результаты. Логика оркестратора создается как обычный код с помощью стандартных конструкций потока управления, таких как циклы, условные условия и блоки try/catch.
Оркестратор может запланировать несколько типов задач:
- Действия для выполнения работы
- Подоркестрации для создания небольших рабочих процессов
- Устойчивые таймеры для задержек и времени ожидания
- Внешние события для ожидания сигналов извне оркестрации
Оркестраторы также могут взаимодействовать с сущностями.
В Durable Functions вы определяете оркестратор с помощью привязки триггера orchestration. Триггер предоставляет объект контекста, используемый для планирования задач и получения результатов.
В пакетах SDK для устойчивых задач необходимо определить оркестратор, реализуя класс или функцию и регистрируя ее в рабочей роли устойчивых задач. Оркестратор получает объект контекста, используемый для планирования задач и получения результатов.
Это важно
Код оркестратора должен быть детерминированным. Среда выполнения устойчивых задач использует событийное моделирование и повторное воспроизведение для перестроения состояния оркестратора, поэтому недетерминированный код может вызвать сбои или взаимоблокировки. Подробные инструкции см. в разделе "Ограничения кода Orchestrator".
Полный обзор поведения оркестратора, включая воспроизведение, идентификацию экземпляра и обработку ошибок, см. в разделе "Устойчивые оркестрации".
Действия
Деятельность — это основная единица работы в устойчивой оркестрации. Каждое действие обычно представляет одну задачу, например вызов веб-API, запись в базу данных или вычисление результата. Оркестраторы вызывают действия, чтобы выполнить свою основную задачу.
Действия отличаются от оркестраторов ключевыми способами:
- Нет ограничений кода. Оркестраторы должны быть детерминированными, но действия могут выполнять любой код, включая недетерминированные или длительные операции.
- Выполнение хотя бы один раз. Среда выполнения гарантирует, что каждое действие выполняется по крайней мере один раз во время оркестрации. Если сбой происходит после завершения действия, но до записи результата, среда выполнения может повторно запустить действие.
- Единая ответственность. Каждое действие получает один вход и возвращает один выход. Чтобы передать несколько значений, используйте сложный тип или коллекцию.
Вы определяете функцию действия с помощью привязки триггера действия. Триггер предоставляет входные данные, передаваемые оркестратором при планировании действия.
Вы определяете активность, реализуя класс или функцию и регистрируя ее в среде Durable Task. Действие получает входные данные, передаваемые оркестратором при планировании.
Замечание
Так как действия гарантируют выполнение только по крайней мере один раз, сделайте логику действия идемпотентной по возможности. Например, используйте upserts вместо вставок или проверьте наличие существующих результатов перед созданием новых ресурсов.
Действия могут выполняться последовательно, параллельно или в сочетании обоих.
Entities
Объекты управляют небольшими, постоянными частями состояния. Каждая сущность имеет уникальную идентичность и набор именованных операций, которые могут считывать или обновлять внутреннее состояние. Сущности отличаются от оркестраторов тем, что они управляют состоянием явно с помощью операций вместо того, чтобы делать это неявно через управление потоками. Они также отличаются от orchestrators тем, что не подчиняются тем же самым ограничениям на код — операции сущностей могут выполнять любой код, включая недетерминированный код или длительные операции.
Распространенные варианты использования сущностей:
- Агрегирование данных из нескольких источников
- Реализация распределенных блокировок или семафоров
- Моделирование объектов с отслеживанием состояния, таких как корзины покупок или игровые сеансы
Операции для сущностей выполняются последовательно: в каждый момент времени для данного экземпляра сущности может выполняться только одна операция. Это последовательное выполнение предотвращает конфликты параллелизма, не требуя явной блокировки.
Вы определяете функцию сущности с помощью привязки триггера.
Замечание
Функции сущностей поддерживаются в .NET, JavaScript/TypeScript, Python и Java, но не в PowerShell.
Вы определяете сущность, реализуя класс и регистрируя его с исполнителем устойчивых задач.
Замечание
Поддержка сущностей доступна в пакетах SDK .NET, JavaScript и TypeScript и Python. Пакет SDK Java в настоящее время не поддерживает сущности.
Полное руководство по определению, вызову и управлению сущностями см. в разделе "Устойчивые сущности".
Client
Клиентский компонент — это способ взаимодействовать с оркестрациями и сущностями извне, за пределами самой оркестрации. К общим операциям клиента относятся:
- Инициализация новых процессов оркестрации
- Запрос состояния запущенной или завершенной оркестрации
- Создание событий в ожидании оркестрации
- Приостановка и возобновление экземпляров оркестрации
- Завершение экземпляров оркестрации
- Сигнальная операция сущности и чтение состояния сущности
Любая не оркестраторная функция может выступать в качестве клиентской функции. Причиной, по которой это является клиентом, является использование устойчивой клиентской привязки вывода. Например, можно запустить оркестрацию из функции с триггером HTTP, функцию, активированную очередью, или функцию, активированную таймером.
Устойчивая привязка клиента также предоставляет API для взаимодействия с сущностями, включая сигнализирование операций сущностей и чтение состояния сущности. Дополнительные сведения см. в привязке клиентской сущности.
В SDK для Durable Task вы взаимодействуете с оркестрациями и сущностями с помощью DurableTaskClient класса. Вы создаете экземпляр клиента в коде приложения и вызываете его методы для запуска, запроса или управления экземплярами оркестрации и сущностей. Клиент может использоваться из любой части приложения — конечной точки HTTP, фоновой службы, консольного приложения или любого другого кода.
Подробные сведения обо всех операциях управления экземплярами, включая примеры кода для каждого языка, можно узнать в разделе Управление экземплярами оркестрации.
Дальнейшие действия
Начните с создания вашего первого приложения Durable Functions:
Начало работы с пакетами SDK для устойчивых задач: