Выставление счетов за Устойчивые функцииDurable Functions billing

Счета за Устойчивые функции выставляются так же, как и за Функции Azure.Durable Functions is billed the same way as Azure Functions. Дополнительные сведения см. на странице цен на Функции Azure.For more information, see Azure Functions pricing.

При выполнении функций оркестратора в рамках плана потребления Функций Azure необходимо знать некоторые особенности при выставлении счетов.When executing orchestrator functions in Azure Functions Consumption plan, you need to be aware of some billing behaviors. В следующих разделах эти характеристики и их влияние описаны более подробно.The following sections describe these behaviors and their effect in more detail.

Выставление счетов за повторение функции оркестратораOrchestrator function replay billing

Функции оркестратора могут повторяться несколько раз в течение всего времени действия оркестрации.Orchestrator functions might replay several times throughout the lifetime of an orchestration. Каждое повторение рассматривается средой выполнения функций Azure как отдельный вызов функции.Each replay is viewed by the Azure Functions runtime as a distinct function invocation. По этой причине в плане потребления Функций Azure вам будет выставлен счет за каждое воспроизведение функции оркестратора.For this reason, in the Azure Functions Consumption plan you're billed for each replay of an orchestrator function. В других типах планов плата за повторение функции оркестратора не взимается.Other plan types don't charge for orchestrator function replay.

Ожидание и возврат в функциях оркестратораAwaiting and yielding in orchestrator functions

Когда функция оркестратора ожидает завершения асинхронного действия с помощью ожидания в C# или приостановления в JavaScript, среда выполнения считает, что это конкретное выполнение завершено.When an orchestrator function waits for an asynchronous action to finish by using await in C# or yield in JavaScript, the runtime considers that particular execution to be finished. Выставление счетов за функцию оркестратора останавливается в этот момент.The billing for the orchestrator function stops at that point. Оно не возобновляется до следующего воспроизведения функции оркестратора.It doesn't resume until the next orchestrator function replay. Вы не оплачиваете время, потраченное на ожидание или возврат в функции оркестратора.You aren't billed for any time spent awaiting or yielding in an orchestrator function.

Примечание

Функции, вызывающие другие функции, рассматриваются в качестве антишаблонных.Functions calling other functions is considered by some to be an antipattern. Это связано с проблемой, известной как двойная оплата.This is because of a problem known as double billing. Если функция напрямую вызывает другую функцию, обе операции выполняются одновременно.When a function calls another function directly, both run at the same time. Вызываемая функция активно выполняет код, пока вызывающая функция ожидает ответа.The called function is actively running code while the calling function is waiting for a response. В этом случае необходимо оплатить время, которое вызывающая функция тратит на ожидание выполнения вызываемой функции.In this case, you must pay for the time the calling function spends waiting for the called function to run.

В функциях оркестратора не существует двойного выставления счетов.There is no double billing in orchestrator functions. Функция оркестратора прекращается, пока ожидается результат действия функции (или подсистемы).An orchestrator function's billing stops while it waits for the result of an activity function or sub-orchestration.

Устойчивый опрос HTTPDurable HTTP polling

Функции оркестратора поддерживают долго выполняющиеся HTTP-вызовы к внешним конечным точкам, как описано в статье о функциях HTTP.Orchestrator functions can make long-running HTTP calls to external endpoints as described in the HTTP features article. Метод CallHttpAsync в C# и callHttp в JavaScript могут внутренне опрашивать конечную точку HTTP, следуя асинхронному шаблону 202.The CallHttpAsync method in C# and the callHttp method in JavaScript might internally poll an HTTP endpoint while following the asynchronous 202 pattern.

В настоящее время прямое выставление счетов для внутренних операций опроса HTTP не проводится.There currently isn't direct billing for internal HTTP polling operations. Однако внутренний опрос может привести к периодическому воспроизведению функции оркестратора.However, internal polling might cause the orchestrator function to periodically replay. Вам будут выставлены стандартные счета за эти внутренние воспроизведения функций.You'll be billed standard charges for these internal function replays.

Транзакции со службой хранилища AzureAzure Storage transactions

Устойчивые функции используют службу хранилища Azure по умолчанию для сохранения состояния, обработки сообщений и управления разделами через аренду BLOB-объектов.Durable Functions uses Azure Storage by default to keep state persistent, process messages, and manage partitions via blob leases. Эта учетная запись хранения принадлежит вам, поэтому счета за транзакции выставляются для подписки Azure.Because you own this storage account, any transaction costs are billed to your Azure subscription. Дополнительные сведения об артефактах службы хранилища Azure, используемых Устойчивыми функциями, см. в статье о центрах задач.For more information about the Azure Storage artifacts used by Durable Functions, see the Task hubs article.

На реальные затраты на хранилище Azure, вызванные приложением "Устойчивые функции", влияют несколько факторов.Several factors contribute to the actual Azure Storage costs incurred by your Durable Functions app:

  • Одно приложение-функция связано с одним центром задач, который использует набор ресурсов службы хранилища Azure.A single function app is associated with a single task hub, which shares a set of Azure Storage resources. Эти ресурсы используются всеми Устойчивыми функциями в приложении-функции.These resources are used by all durable functions in a function app. Фактическое число функций в приложении-функции не влияет на затраты на транзакции в службе хранилища Azure.The actual number of functions in the function app has no effect on Azure Storage transaction costs.
  • Каждый экземпляр приложения-функции внутренне опрашивает несколько очередей в учетной записи хранения с использованием алгоритма экспоненциальной задержки.Each function app instance internally polls multiple queues in the storage account by using an exponential-backoff polling algorithm. Бездействующее приложение опрашивает очереди реже, чем активное приложение, что приводит к снижению транзакционных издержек.An idle app instance polls the queues less often than does an active app, which results in fewer transaction costs. Дополнительные сведения о поведении опроса очередей Устойчивыми функциями см. в разделе "Опрос очередей" статьи "Производительность и масштабирование".For more information about Durable Functions queue-polling behavior, see the queue-polling section of the Performance and Scale article.
  • Во время работы в планах "Потребление" или "Премиум" Функций Azure контроллер масштабирования Функций Azure регулярно опрашивает все очереди центра задач в фоновом режиме.When running in the Azure Functions Consumption or Premium plans, the Azure Functions scale controller regularly polls all task-hub queues in the background. В случае понижения масштаба до умеренного уровня только один экземпляр контроллера масштабирования будет опрашивать эти очереди.If a function app is under light to moderate scale, only a single scale controller instance will poll these queues. Если приложение-функция масштабируется до большого количества экземпляров, могут быть добавлены дополнительные экземпляры контроллера масштабирования.If the function app scales out to a large number of instances, more scale controller instances might be added. Эти дополнительные экземпляры контроллера масштабирования могут увеличить общую стоимость транзакций очереди.These additional scale controller instances can increase the total queue-transaction costs.
  • Каждый экземпляр приложения-функции конкурирует за набор аренд BLOB-объектов.Each function app instance competes for a set of blob leases. Эти экземпляры будут периодически вызывать службу BLOB-объектов Azure, чтобы обновить удерживаемые аренды или получить новые аренды.These instances will periodically make calls to the Azure Blob service either to renew held leases or to attempt to acquire new leases. Количество аренд BLOB-объектов определяется в соответствии с количеством разделов, настроенных в центре задач.The task hub's configured partition count determines the number of blob leases. Масштабирование приложения-функции до большего количества экземпляров, скорее всего, увеличит затраты на транзакции хранилища Azure, связанные с этими операциями аренды.Scaling out to a larger number of function app instances likely increases the Azure Storage transaction costs associated with these lease operations.

Дополнительные сведения о ценах на службу хранилища Azure см. в документации по ценам на службу хранилища Azure.You can find more information on Azure Storage pricing in the Azure Storage pricing documentation.

Дополнительная информацияNext steps