Типы и возможности Устойчивых функций

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

В функциях Azure в настоящее время существует четыре типа устойчивых функции: Activity, Orchestrator, Entity и Client. В оставшейся части этого раздела приводятся дополнительные сведения о типах функций, участвующих в оркестрации.

Функции оркестратора

Функции оркестратора описывают характер и порядок выполнения действий. Функции оркестратора описывают оркестрацию в коде (C# или JavaScript), как показано в статье Паттерны приложения «Устойчивые функции». Оркестрация может поддерживать различные типы действий, например функции действий, вложенные оркестрации, ожидание внешних событий, HTTP и таймеры. Функции Orchestrator также могут взаимодействовать с функциями сущностей.

Примечание

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

Более подробные сведения об Orchestrator и его функциях см. в статье Устойчивые оркестрации.

Функции действий

Функции действий являются базовой единицей работы в устойчивой оркестрации. Функции действий — это функции и задачи, управляемые в процессе. Например, вы можете создать функцию Orchestrator для обработки заказа. Задачи подразумевают проверку запасов, оплату клиента и создание отгрузки. Каждая задача будет отдельной функцией действия. Эти функции действий могут выполняться последовательно, параллельно или в любом сочетании.

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

Примечание

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

Используйте триггер действия для определения функции действия. Функции .NET получают в DurableActivityContext качестве параметра. Триггер можно также привязать к любому другому JSON-серийному объекту для передачи входных данных в функцию. На JavaScript данные можно вводить через <activity trigger binding name> свойство на context.bindings объекте. Функциям действий может быть передано только одно значение. Для передачи нескольких значений необходимо использовать кортежи, массивы или сложные типы.

Примечание

Функцию действия можно активировать только из функции Orchestrator.

Функции сущностей

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

Примечание

Функции сущностей и связанные функции доступны только в Устойчивых функциях версии 2.0 и более поздних версиях.

Дополнительные сведения о функциях сущностей см. в статье об устойчивых сущностях.

Клиентские функции

Функции Orchestrator запускаются с помощью привязки триггера оркестрации, а функции сущностей вызываются привязкой триггера сущности. Оба триггера работают путем реагирования на сообщения, которые ставятся в очередь в Центре задач. Основным способом доставки этих сообщений является использование привязки клиента Orchestrator или привязки клиента сущности в клиентской функции. Любая функция, не относящаяся к Orchestrator, может быть клиентской функцией. Например, вы можете активировать Orchestrator из функции, активируемой HTTP, функции, активируемой Концентратором событий Azure, и т. д. Функция, которая делает функцию клиентской, использует выходную привязку долговременного клиента.

Примечание

В отличие от других типов функций Orchestrator и функции сущностей нельзя активировать напрямую с помощью кнопок на портале Azure. Если вы хотите протестировать Orchestrator или функцию сущности на портале Azure, необходимо запустить клиентскую функцию, которая запускает функцию Orchestrator или Entity в рамках своей реализации. Для простейшего тестирования рекомендуется использовать функцию триггера вручную.

Помимо активации функций Orchestrator или Entity, для взаимодействия с запущенными оркестрации и сущностями можно использовать устойчивую клиентскую привязку. Например, оркестрации могут запрашиваться, завершаться и получать события. Дополнительные сведения об управлении оркестрациями и сущностями см. в статье Управление экземплярами.

Дальнейшие действия

Для начала напишите первую устойчивую функцию на C#, JavaScript, Python, PowerShell или Java.