Vergleich der Azure Functions-Hostingoptionen
Wenn Sie eine Funktions-App in Azure erstellen, müssen Sie einen Hostingplan für die App auswählen. Azure bietet Ihnen diese Hostingoptionen für Ihren Funktionscode:
Hostingoption | Dienst | Verfügbarkeit | Containerunterstützung |
---|---|---|---|
Verbrauchstarif | Azure-Funktionen | Allgemein verfügbar (Generally Available, GA) | Keine |
Flex-Verbrauchstarif | Azure-Funktionen | Vorschau | Keine |
Premium-Plan | Azure-Funktionen | Allgemein verfügbar | Linux |
Dedizierter Plan | Azure-Funktionen | Allgemein verfügbar | Linux |
Container-Apps | Azure Container Apps | Allgemein verfügbar | Linux |
Die Azure App Service-Infrastruktur erleichtert das Hosting von Azure Functions auf virtuellen Linux- und Windows-Computern. Die von Ihnen gewählte Hostingoption bestimmt folgendes Verhalten:
- Wie Ihre Funktions-App skaliert wird.
- Die für jede Instanz der Funktions-App verfügbaren Ressourcen.
- Die Unterstützung für erweiterte Funktionen wie Azure Virtual Network-Konnektivität
- Unterstützung für Linux-Container.
Der von Ihnen ausgewählte Plan wirkt sich auch auf die Kosten für die Ausführung des Funktionscodes aus.
Übersicht über die Pläne
Es folgt eine Zusammenfassung der Vorteile der verschiedenen Hostingoptionen:
Verbrauchsplan
Der Verbrauchsplan ist der Standardhostingplan. Zahlen Sie nur für Computeressourcen, wenn Ihre Funktionen ausgeführt werden (nutzungsbasiert) mit automatischer Skalierung. Im Verbrauchsplan werden Instanzen des Functions-Hosts basierend auf der Anzahl von eingehenden Ereignissen dynamisch hinzugefügt und entfernt.
Flex-Verbrauchstarif
Erhalten Sie hohe Skalierbarkeit mit Computeauswahlen, virtuellen Netzwerken und nutzungsbasierter Abrechnung. Im Flex-Verbrauchsplan werden Instanzen des Funktions-Host basierend auf der konfigurierten Parallelität der Instanz und der Anzahl der eingehenden Ereignisse dynamisch hinzugefügt und entfernt.
Sie können Kaltstarts reduzieren, indem Sie die Anzahl der vorab bereitgestellten (immer bereit) Instanzen angeben. Skaliert automatisch basierend auf Bedarf.
Premium-Plan
In diesem Plan werden Ressourcen automatisch nach Bedarf skaliert. Nutzen Sie vorab aufgewärmte (also betriebsbereite) Worker, um Anwendungen nach einem Leerlauf ohne jede Verzögerung auszuführen, profitieren Sie von leistungsstärkeren Instanzen für die Ausführung, und stellen Sie Verbindungen mit virtuellen Netzwerken her.
Ziehen Sie den Premium-Plan für Azure Functions in folgenden Situationen in Betracht:
- Ihre Funktions-Apps werden kontinuierlich oder nahezu kontinuierlich ausgeführt.
- Sie möchten mehr Kontrolle über Ihre Instanzen haben und mehrere Funktions-Apps im selben Plan mit ereignisgesteuerter Skalierung bereitstellen.
- Sie verfügen über eine hohe Anzahl kleiner Ausführungen und haben hohe Ausführungskosten, aber wenige Gigabytesekunden im Verbrauchsplan.
- Sie benötigen weitere CPU- oder Arbeitsspeicheroptionen zusätzlich zu den vom Verbrauchsplan bereitgestellten.
- Ihr Code muss länger ausgeführt werden, als im Verbrauchsplan als maximal zulässige Ausführungsdauer angegeben ist.
- Sie benötigen VNet-Konnektivität.
- Sie möchten ein benutzerdefiniertes Linux-Image bereitstellen, auf dem Ihre Funktionen ausgeführt werden sollen.
Dedizierter Plan
Führen Sie Ihre Funktionen in einem App Service-Plan zu den regulären Preisen dieses Plans aus. Dieser Plan eignet sich am besten in zeitintensiven Szenarien, in denen Durable Functions nicht verwendet werden kann.
Ziehen Sie einen App Service-Plan in folgenden Situationen in Betracht:
- Sie müssen über eine vollständig vorhersehbare Abrechnung verfügen, oder Sie müssen Instanzen manuell skalieren.
- Sie möchten mehrere Web-Apps und Funktions-Apps im selben Plan ausführen.
- Sie benötigen Zugriff auf eine größere Auswahl an Computegrößen.
- Vollständig isoliertes Compute und sicherer Netzwerkzugriff, der von einer App Service-Umgebung (ASE) bereitgestellt wird.
- Hohe Speicherauslastung und hohe Skalierung (ASE).
Container-Apps
Erstellen und Bereitstellen von containerisierten Funktions-Apps in einer vollständig verwalteten Umgebung, die von Azure Container Apps gehostet wird.
Verwenden Sie das Programmiermodell von Azure Functions, um ereignisgesteuerte, serverlose, cloudnative Funktions-Apps zu erstellen. Führen Sie Ihre Funktionen zusammen mit anderen Microservices, APIs, Websites und Workflows als containergehostete Programme aus.
Überlegen Sie, Ihre Funktionen in Container Apps in den folgenden Situationen zu hosten:
- Sie möchten benutzerdefinierte Bibliotheken mit Ihrem Funktionscode in einem Paket zusammenfassen, um branchenspezifische Apps zu unterstützen.
- Sie müssen die Codeausführung von lokalen Apps oder Legacy-Apps zu cloudnativen Microservices migrieren, die in Containern ausgeführt werden.
- Sie möchten den Mehraufwand und die Komplexität der Verwaltung von Kubernetes-Clustern und dedizierten Computeressourcen vermeiden.
- Sie benötigen die High-End-Verarbeitungsleistung, die von dedizierten CPU-Computeressourcen für Ihre Funktionen bereitgestellt wird.
Funktions-App-Timeoutdauer
Die functionTimeout
-Eigenschaft in der Projektdatei host.json gibt die Timeoutdauer für Funktionen in einer Funktions-App an. Diese Eigenschaft gilt speziell für Funktionsausführungen. Nachdem der Trigger die Ausführung der Funktion gestartet hat, muss die Funktion innerhalb der Timeoutdauer eine Rückgabe durchführen/reagieren.
Die folgende Tabelle zeigt die Standard- und Höchstwerte (in Minuten) für bestimmte Pläne:
Plan | Standard | Maximum1 |
---|---|---|
Verbrauchsplan | 5 | 10 |
Flex-Verbrauchstarif | 30 | Unbegrenzt3 |
Premium-Plan | 302 | Unbegrenzt3 |
Dedizierter Plan | 302 | Unbegrenzt3 |
Container-Apps | 305 | Unbegrenzt3 |
- Unabhängig von der Timeouteinstellung der Funktions-App stellen 230 Sekunden die längste Zeit dar, die einer über HTTP ausgelösten Funktion bis zur Reaktion auf eine Anfrage bleibt.
- Das Standardzeitlimit für Version 1.x der Functions-Runtime ist unbegrenzt.
- Garantiert für bis zu 60 Minuten. Betriebssystem- und Runtimepatching, Sicherheitsrisikopatching und Verhaltensweisen beim Abskalieren können dennoch zum Abbruch von Funktionsausführungen führen.
- In einem Flex-Verbrauchsplan erzwingt der Host kein Ausführungszeitlimit. Derzeit gibt es jedoch keine Garantien, da die Plattform Ihre Instanzen möglicherweise während der Skalierung, der Bereitstellung oder zum Anwenden von Updates beenden muss.
- Wenn die Mindestanzahl von Replikaten auf Null festgelegt ist, hängt das Standardzeitlimit von den spezifischen Triggern ab, die in der App verwendet werden.