Facturering Durable FunctionsDurable Functions billing

Durable functions wordt op dezelfde manier gefactureerd als Azure functions.Durable Functions is billed the same way as Azure Functions. Zie voor meer informatie, prijzen van Azure Functions.For more information, see Azure Functions pricing.

Bij het uitvoeren van Orchestrator-functies in Azure Functions verbruiks abonnementmoet u rekening houden met een aantal facturerings gedrag.When executing orchestrator functions in Azure Functions Consumption plan, you need to be aware of some billing behaviors. In de volgende secties worden deze gedragingen en hun effect in meer detail beschreven.The following sections describe these behaviors and their effect in more detail.

Facturering van Orchestrator-functie replayOrchestrator function replay billing

Orchestrator-functies kunnen meerdere keren worden herhaald gedurende de levens duur van een indeling.Orchestrator functions might replay several times throughout the lifetime of an orchestration. Elke herhaling wordt weer gegeven door de Azure Functions runtime als een afzonderlijke functie aanroep.Each replay is viewed by the Azure Functions runtime as a distinct function invocation. Daarom wordt in het Azure Functions verbruiks plan voor elk herhaling van een Orchestrator-functie gefactureerd.For this reason, in the Azure Functions Consumption plan you're billed for each replay of an orchestrator function. Andere typen abonnementen worden niet in rekening gebracht voor de Orchestrator-functie replay.Other plan types don't charge for orchestrator function replay.

Wachtende en opleveren in Orchestrator-functiesAwaiting and yielding in orchestrator functions

Wanneer een Orchestrator-functie wacht op het volt ooien van een asynchrone actie door te gebruiken C# in een wacht tijd in of in te leveren in Java script, beschouwt de runtime dat bepaalde uitvoeringen zijn voltooid.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. De facturering voor de Orchestrator-functie stopt op dat moment.The billing for the orchestrator function stops at that point. Het wordt pas hervat als de volgende Orchestrator-functie opnieuw wordt afgespeeld.It doesn't resume until the next orchestrator function replay. Er worden geen kosten in rekening gebracht voor elke tijd die nodig is om een Orchestrator-functie te gebruiken of te leveren.You aren't billed for any time spent awaiting or yielding in an orchestrator function.

Notitie

Functies die andere functies aanroepen, worden beschouwd als een anti patroon.Functions calling other functions is considered by some to be an antipattern. Dit komt door een probleem met de dubbele facturering.This is because of a problem known as double billing. Wanneer een functie rechtstreeks een functie aanroept, wordt beide tegelijk uitgevoerd.When a function calls another function directly, both run at the same time. De aangeroepen functie voert code actief uit terwijl de aanroepende functie wacht op een antwoord.The called function is actively running code while the calling function is waiting for a response. In dit geval moet u betalen voor het tijdstip waarop de aanroepende functie wacht voordat de aangeroepen functie wordt uitgevoerd.In this case, you must pay for the time the calling function spends waiting for the called function to run.

Er is geen dubbele facturering in Orchestrator-functies.There is no double billing in orchestrator functions. De facturering van een Orchestrator-functie wordt gestopt tijdens het wachten op het resultaat van een activiteit functie of suborchestration.An orchestrator function's billing stops while it waits for the result of an activity function or sub-orchestration.

Duurzame HTTP-pollingDurable HTTP polling

Met Orchestrator-functies kunt u langlopende HTTP-aanroepen naar externe eind punten maken, zoals beschreven in het artikel http-functies.Orchestrator functions can make long-running HTTP calls to external endpoints as described in the HTTP features article. De methode CallHttpAsync in C# en de methode callHttp in Java script kunnen een http-eind punt intern pollen tijdens het asynchrone 202-patroon.The CallHttpAsync method in C# and the callHttp method in JavaScript might internally poll an HTTP endpoint while following the asynchronous 202 pattern.

Er wordt momenteel geen directe facturering uitgevoerd voor interne HTTP-polling bewerkingen.There currently isn't direct billing for internal HTTP polling operations. Interne polling kan er echter toe leiden dat de Orchestrator-functie regel matig opnieuw speelt.However, internal polling might cause the orchestrator function to periodically replay. Er worden standaard kosten in rekening gebracht voor deze interne functie herhalingen.You'll be billed standard charges for these internal function replays.

Azure Storage trans actiesAzure Storage transactions

Durable Functions gebruikt Azure Storage standaard om de status permanent te houden, berichten te verwerken en partities te beheren via BLOB-leases.Durable Functions uses Azure Storage by default to keep state persistent, process messages, and manage partitions via blob leases. Omdat u eigenaar bent van dit opslag account, worden de transactie kosten in rekening gebracht voor uw Azure-abonnement.Because you own this storage account, any transaction costs are billed to your Azure subscription. Zie het artikel over de taak hubsvoor meer informatie over de Azure Storage artefacten die worden gebruikt door Durable functions.For more information about the Azure Storage artifacts used by Durable Functions, see the Task hubs article.

Verschillende factoren dragen bij aan de werkelijke Azure Storage kosten die worden gemaakt door uw Durable Functions-app:Several factors contribute to the actual Azure Storage costs incurred by your Durable Functions app:

  • Een app met één functie is gekoppeld aan één Task hub, die een set Azure Storage resources deelt.A single function app is associated with a single task hub, which shares a set of Azure Storage resources. Deze resources worden gebruikt door alle duurzame functies in een functie-app.These resources are used by all durable functions in a function app. Het werkelijke aantal functies in de functie-app heeft geen invloed op de kosten van Azure Storage trans acties.The actual number of functions in the function app has no effect on Azure Storage transaction costs.
  • Elk exemplaar van de functie-app pollt intern meerdere wacht rijen in het opslag account met behulp van een exponentieel uitstel polling-algoritme.Each function app instance internally polls multiple queues in the storage account by using an exponential-backoff polling algorithm. Een exemplaar van een niet-actieve app controleert de wacht rijen minder vaak dan een actieve app, wat leidt tot minder transactie kosten.An idle app instance polls the queues less often than does an active app, which results in fewer transaction costs. Zie de sectie wachtrij-polling in het artikel prestaties en schalenvoor meer informatie over Durable functions polling van de wachtrij.For more information about Durable Functions queue-polling behavior, see the queue-polling section of the Performance and Scale article.
  • Bij het uitvoeren van de Azure Functions verbruiks-of Premium-abonnementen, pollt de Azure functions Scale controller regel matig alle taak-hub-wacht rijen op de achtergrond.When running in the Azure Functions Consumption or Premium plans, the Azure Functions scale controller regularly polls all task-hub queues in the background. Als een functie-app onder licht wordt geschaald, wordt deze wacht rijen alleen door een exemplaar van een enkele schaal controller gecontroleerd.If a function app is under light to moderate scale, only a single scale controller instance will poll these queues. Als de functie-app wordt geschaald naar een groot aantal exemplaren, kunnen er meer instanties van de schaal controller worden toegevoegd.If the function app scales out to a large number of instances, more scale controller instances might be added. Deze extra schaal controller-instanties kunnen de totale transactie kosten van de wachtrij verhogen.These additional scale controller instances can increase the total queue-transaction costs.
  • Elk functie-app-exemplaar is een concurrentie positie voor een set BLOB-leases.Each function app instance competes for a set of blob leases. Met deze instanties worden regel matig aanroepen naar de Azure-Blob service voor het vernieuwen van leases of het verkrijgen van nieuwe leases.These instances will periodically make calls to the Azure Blob service either to renew held leases or to attempt to acquire new leases. Met het geconfigureerde aantal partities van de taak hub wordt het aantal BLOB-leases bepaald.The task hub's configured partition count determines the number of blob leases. Als u uitschaalt naar een groter aantal functie-app-exemplaren, worden de Azure Storage transactie kosten die zijn gekoppeld aan deze lease bewerkingen waarschijnlijk verhoogd.Scaling out to a larger number of function app instances likely increases the Azure Storage transaction costs associated with these lease operations.

Meer informatie over Azure Storage prijzen vindt u in de Azure Storage prijzen documentatie.You can find more information on Azure Storage pricing in the Azure Storage pricing documentation.

Volgende stappenNext steps