Facturering met Durable Functions
Durable Functions worden op dezelfde manier in rekening gebracht als Azure Functions. Zie Prijzen voor Azure Functions voor meer informatie.
Wanneer u orchestrator-functies in het Verbruiksabonnement van Azure Functions uitvoert, dient u op enkele factureringseigenschappen te letten. De volgende secties beschrijven deze behaviors en hun effecten in meer detail.
Facturering van orchestrator-functie herhalen
Orchestrator-functies kunnen meerdere keren opnieuw worden afgespeeld gedurende de levensduur van een orchestrator. Elke herhaling wordt weergegeven door de Azure Functions-runtime als een afzonderlijke functie-aanroep. Daarom wordt in het Azure Functions-verbruiksplan elke herhaling van een Orchestrator-functie gefactureerd. Andere typen abonnementen worden niet in rekening gebracht voor het herhalen van de orchestrator-functie.
Wachten en opleveren in orchestrator-functies
Wanneer een orchestratorfunctie wacht tot een asynchrone taak is voltooid, beschouwt de runtime die bepaalde functieaanroep als voltooid. De facturering voor de orchestrator-functie stopt op dat moment. Het wordt pas hervat als de volgende orchestrator-functie opnieuw wordt afgespeeld. Er worden geen kosten in rekening gebracht voor tijd die nodig is om een orchestrator-functie te gebruiken of te leveren.
Notitie
Functies die andere functies aanroepen, worden door sommigen beschouwd als een serverloos antipatroon. Dit komt door een probleem dat bekendstaat als dubbele facturering. Wanneer een functie rechtstreeks een functie aanroept, worden beiden tegelijk uitgevoerd. De aangeroepen functie voert code actief uit terwijl de aanroepende functie wacht op een antwoord. In dit geval moet u betalen voor de tijd die de aanroepende functie wacht voordat de aangeroepen functie wordt uitgevoerd.
Er is geen dubbele facturering in orchestrator-functies. De facturering van een orchestrator-functie wordt gestopt tijdens het wachten op het resultaat van een activiteitsfunctie of sub-orchestration.
Duurzame HTTP-polling
Met orchestrator-functies kunt u langlopende HTTP-aanroepen naar externe eindpunten maken, zoals beschreven in het artikel HTTP-functies. De HTTP-API's aanroepen kunnen intern een HTTP-eindpunt peilen terwijl het asynchrone 202-patroon wordt gevolgd.
Er wordt momenteel geen directe facturering uitgevoerd voor interne HTTP-pollingbewerkingen. Interne polling kan er echter toe leiden dat de orchestrator-functie regelmatig opnieuw wordt afgespeeld. Er worden standaardkosten in rekening gebracht voor deze interne functieherhalingen.
Azure Storage-transacties
Durable Functions gebruikt Azure Storage standaard om de status permanent te houden, berichten te verwerken en partities te beheren via blob-leases. Omdat u eigenaar bent van dit opslagaccount, worden de transactiekosten in rekening gebracht op uw Azure-abonnement. Voor meer informatie over de Azure Storage-artefacten die door Durable Functions worden gebruikt, raadpleegt u het artikel over taakhubs.
Verschillende factoren dragen bij aan de werkelijke Azure Storage-kosten die worden gemaakt door uw Durable Functions-app:
- Een app met één functie is gekoppeld aan één taakhub, die een set Azure Storage-resources deelt. Deze resources worden gebruikt door alle duurzame functies in een functie-app. Het werkelijke aantal functies in de functie-app heeft geen invloed op de kosten van Azure Storage-transacties.
- Elke instantie van de functie-app voert intern polls uit voor meerdere wachtrijen in het opslagaccount met behulp van een polling-algoritme met exponentiële uitstelfunctie. Een instantie van een niet-actieve app controleert de wachtrijen minder vaak dan een actieve app, wat leidt tot minder transactiekosten. Voor meer informatie over Durable Functions gedrag bij het pollen van wachtrijen bij het gebruik van de Azure Storage-provider raadpleegt u de sectie wachtrijen polling van de documentatie van de Azure Storage-provider.
- Bij het uitvoeren van de Azure Functions Consumption- of Premium-abonnementen, worden door de Azure Functions Scale-controller regelmatig polls uitgevoerd voor alle taakhub-wachtrijen op de achtergrond. Als een functie-app een lichte tot matige schaal heeft, zal slechts één enkele controller-exemplaar deze wachtrijen pollen. Als de functie-app wordt geschaald naar een groot aantal exemplaren, kunnen er meer schaalcontroller-exemplaren worden toegevoegd. Deze extra schaalcontroller-exemplaren kunnen de totale transactiekosten van de wachtrij verhogen.
- Elke functie-app-instantie is een concurrent voor een set blob-leases. Deze exemplaren zullen periodiek de Azure Blob-service aanroepen om vastgehouden leases te verlengen of om te proberen nieuwe leases te verwerven. Met het geconfigureerde aantal partities van de taakhub wordt het aantal blob-leases bepaald. Als u uitschaalt naar een groter aantal functie-app-instanties, worden de transactiekosten van Azure Storage die aan deze leasebewerkingen zijn gekoppeld, waarschijnlijk verhoogd.
In de documentatie Azure Storage-prijzen vindt u meer informatie over Azure Storage-prijzen.