Opcje hostingu usługi Azure Functions
Podczas tworzenia aplikacji funkcji na platformie Azure należy wybrać plan hostingu dla aplikacji. Istnieją trzy podstawowe plany hostingu usługi Azure Functions udostępniane przez usługę Azure Functions: plan zużycia, plan Premium i plan dedykowany (App Service). Te plany hostingu są obsługiwane przez infrastrukturę usługi aplikacja systemu Azure i są ogólnie dostępne na maszynach wirtualnych z systemami Linux i Windows.
Wybrany plan hostingu usługi Azure Functions określa następujące zachowania:
- Sposób skalowania aplikacji funkcji.
- Zasoby dostępne dla każdego wystąpienia aplikacji funkcji.
- Obsługa zaawansowanych funkcji, takich jak łączność z usługą Azure Virtual Network.
Oprócz hostingu usługi Azure Functions można również hostować konteneryzowane aplikacje funkcji w kontenerach, które można wdrożyć w klastrach Kubernetes lub w usłudze Azure Container Apps. Jeśli zdecydujesz się hostować funkcje w klastrze Kubernetes, rozważ użycie klastra Kubernetes z obsługą usługi Azure Arc. Aby dowiedzieć się więcej na temat wdrażania niestandardowych aplikacji kontenerów, zobacz Hostowanie usługi Azure Container Apps w usłudze Azure Functions.
Ten artykuł zawiera szczegółowe porównanie różnych planów hostingu, w tym opcji hostingu opartych na kontenerach.
Uwaga
Hostowanie kontenerów usługi Azure Functions zarówno w klastrach Kubernetes z włączoną usługą Azure Arc, jak i w usłudze Azure Container Apps jest obecnie w wersji zapoznawczej.
Omówienie planów
Poniżej przedstawiono podsumowanie korzyści z trzech głównych planów hostingu usługi Azure Functions:
Planowanie | Świadczenia |
---|---|
Plan zużycia | Skaluj automatycznie i płać za zasoby obliczeniowe wyłącznie wtedy, gdy funkcje są uruchomione. W planie Zużycie wystąpienia hosta usługi Functions są dynamicznie dodawane i usuwane w zależności od liczby zdarzeń przychodzących. ✔ Domyślny plan hostingu. ✔ Płatność tylko wtedy, gdy funkcje są uruchomione. ✔ Skaluje się automatycznie, nawet w okresach dużego obciążenia. |
Plan Premium | Automatyczne skalowanie na podstawie zapotrzebowania przy użyciu wstępnie rozgrzanych procesów roboczych, które uruchamiają aplikacje bez opóźnień po bezczynności, działają w bardziej zaawansowanych wystąpieniach i łączą się z sieciami wirtualnymi. Rozważ plan usługi Azure Functions w warstwie Premium w następujących sytuacjach: ✔ Aplikacje funkcji działają w sposób ciągły lub niemal ciągły. ✔ Masz dużą liczbę małych wykonań i wysoki rachunek za wykonanie, ale niskie GB sekund w planie Zużycie. ✔ Potrzebujesz więcej opcji procesora CPU lub pamięci niż to, co jest udostępniane przez plan Zużycie. ✔ Kod musi działać dłużej niż maksymalny czas wykonywania dozwolony w planie Zużycie. ✔ Wymagane są funkcje, które nie są dostępne w planie Zużycie, takie jak łączność z siecią wirtualną. ✔ Chcesz udostępnić niestandardowy obraz systemu Linux, na którym będą uruchamiane funkcje. |
Dedykowany plan | Uruchamianie funkcji w ramach planu usługi App Service według zwykłych stawek planu usługi App Service. Najlepsze w przypadku długotrwałych scenariuszy, w których nie można używać rozszerzenia Durable Functions . Rozważ plan usługi App Service w następujących sytuacjach: ✔ Masz istniejące, nie w pełni wykorzystywane maszyny wirtualne, które już korzystają z innych wystąpień usługi App Service. ✔ Wymagane jest skalowanie predykcyjne i koszty. |
Tabele porównania w tym artykule zawierają również następujące opcje hostingu, które zapewniają najwyższą ilość kontroli i izolacji, w której można uruchamiać aplikacje funkcji.
Opcja hostingu | Szczegóły |
---|---|
ASE | App Service Environment (ASE) to funkcja usługi App Service, która zapewnia w pełni izolowane i dedykowane środowisko do bezpiecznego uruchamiania aplikacji usługi App Service na dużą skalę. Środowiska ASE są odpowiednie dla obciążeń aplikacji, które wymagają: ✔ Bardzo wysoka skala. ✔ Pełna izolacja obliczeniowa i bezpieczny dostęp sieciowy. ✔ Wysokie użycie pamięci. |
Azure Container Apps | Azure Container Apps to w pełni zarządzane środowisko, które umożliwia uruchamianie mikrousług i konteneryzowanych aplikacji na platformie bezserwerowej. Usługa Azure Container Apps umożliwia uruchamianie funkcji przy użyciu możliwości bazowej usługi Azure Kubernetes Service (AKS) przy jednoczesnym usunięciu złożoności konieczności pracy z interfejsami API platformy Kubernetes. |
Kubernetes (Bezpośrednie lub Azure Arc) |
Platforma Kubernetes udostępnia w pełni izolowane i dedykowane środowisko działające na platformie Kubernetes. Platforma Kubernetes jest odpowiednia dla obciążeń aplikacji, które wymagają: ✔ Niestandardowe wymagania sprzętowe. ✔ Izolacja i bezpieczny dostęp sieciowy. ✔ Możliwość uruchamiania w środowisku hybrydowym lub wielochmurowym. ✔ Uruchom obok istniejących aplikacji i usług Platformy Kubernetes. |
Pozostałe tabele w tym artykule porównują plany dotyczące różnych funkcji i zachowań. Aby zapoznać się z porównaniem kosztów między dynamicznymi planami hostingu (Zużycie i Wersja Premium), zobacz stronę cennika usługi Azure Functions. Aby uzyskać informacje o cenach różnych opcji planu dedykowanego, zobacz stronę cennika usługi App Service.
System operacyjny/środowisko uruchomieniowe
W poniższej tabeli przedstawiono obsługę systemu operacyjnego i języka dla planów hostingu.
Linux1,2 tylko kod |
Tylko kod systemu Windows | Linux1,2,3 Kontener platformy Docker |
|
---|---|---|---|
Plan zużycia | C# JavaScript Java Python PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
Brak obsługi |
Plan Premium | C# JavaScript Java Python PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
Dedykowany plan | C# JavaScript Java Python TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
ASE | C# JavaScript Java Python TypeScript |
C# JavaScript Java PowerShell Core TypeScript |
C# JavaScript Java PowerShell Core Python TypeScript |
Kubernetes (bezpośrednie) | nie dotyczy | nie dotyczy | C# JavaScript Java PowerShell Core Python TypeScript |
Azure Arc (wersja zapoznawcza) | C# JavaScript Java Python TypeScript |
nie dotyczy | C# JavaScript Java PowerShell Core Python TypeScript |
1 Linux jest jedynym obsługiwanym systemem operacyjnym dla stosu środowiska uruchomieniowego języka Python.
2 Obsługa programu PowerShell w systemie Linux jest obecnie dostępna w wersji zapoznawczej.
3 Linux jest jedynym obsługiwanym systemem operacyjnym dla kontenerów platformy Docker.
Czas trwania limitu czasu aplikacji funkcji
Limit czasu dla funkcji w aplikacji funkcji jest definiowany przez functionTimeout
właściwość w pliku projektu host.json . Ta właściwość ma zastosowanie specjalnie do wykonywania funkcji. Po uruchomieniu wykonywania funkcji wyzwalacz musi zwrócić/odpowiedzieć w czasie trwania limitu czasu. Aby uzyskać więcej informacji, zobacz Zwiększanie wydajności i niezawodności usługi Azure Functions.
W poniższej tabeli przedstawiono wartości domyślne i maksymalne (w minutach) dla określonych planów:
Planowanie | Wartość domyślna | Maksymalna1 |
---|---|---|
Plan zużycia | 5 | 10 |
Plan Premium | 302 | Nieograniczone3 |
Dedykowany plan | 302 | Nieograniczone3 |
1 Niezależnie od ustawienia limitu czasu aplikacji funkcji 230 sekund jest maksymalnym czasem, przez który funkcja wyzwalana przez protokół HTTP może odpowiedzieć na żądanie. Wynika to z domyślnego limitu czasu bezczynności usługi Azure Load Balancer. W przypadku dłuższych czasów przetwarzania rozważ użycie wzorca asynchronicznego rozszerzenia Durable Functions lub odroczenie rzeczywistej pracy i zwrócenie natychmiastowej odpowiedzi.
2 Domyślny limit czasu dla wersji 1.x środowiska uruchomieniowego usługi Functions jest nieograniczony.
3 Gwarantowane przez maksymalnie 60 minut. Stosowanie poprawek systemu operacyjnego i środowiska uruchomieniowego, stosowanie poprawek luk w zabezpieczeniach i skalowanie w zachowaniach może nadal anulować wykonywanie funkcji, dzięki czemu można zapisywać niezawodne funkcje.
Skaluj
W poniższej tabeli porównaliśmy zachowania skalowania różnych planów hostingu.
Maksymalna liczba wystąpień jest podawana dla poszczególnych aplikacji funkcji (Zużycie) lub według planu (Premium/Dedykowana), chyba że określono inaczej.
Planowanie | Skalowanie w poziomie | Maksymalna liczba wystąpień |
---|---|---|
Plan zużycia | Sterowane zdarzeniami. Automatyczne skalowanie w poziomie nawet w okresach dużego obciążenia. Infrastruktura usługi Azure Functions skaluje zasoby procesora CPU i pamięci przez dodanie dodatkowych wystąpień hosta usługi Functions na podstawie liczby przychodzących zdarzeń wyzwalacza. | Windows: 200 Linux: 1001 |
Plan Premium | Sterowane zdarzeniami. Automatyczne skalowanie w poziomie nawet w okresach dużego obciążenia. Infrastruktura usługi Azure Functions skaluje zasoby procesora CPU i pamięci przez dodanie dodatkowych wystąpień hosta usługi Functions na podstawie liczby zdarzeń wyzwalanych przez jego funkcje. | Windows: 100 Linux: 20-1002 |
Dedykowany plan3 | Ręczne/automatyczne skalowanie | 10-30 |
ASE3 | Ręczne/automatyczne skalowanie | 100 |
Kubernetes | Automatyczne skalowanie sterowane zdarzeniami dla klastrów Kubernetes przy użyciu usługi KEDA. | Różni się w zależności od klastra |
1 Podczas skalowania w poziomie obecnie istnieje limit 500 wystąpień na godzinę dla aplikacji systemu Linux w ramach planu Zużycie.
2 W niektórych regionach aplikacje systemu Linux w planie Premium mogą być skalowane do 100 wystąpień. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący planu Premium.
3 Aby uzyskać określone limity dla różnych opcji planu usługi App Service, zobacz Limity planu usługi App Service.
Zachowanie zimnego startu
Planowanie | Szczegóły |
---|---|
Plan zużycia | Aplikacje mogą być skalowane do zera w przypadku bezczynności, co oznacza, że niektóre żądania mogą mieć dodatkowe opóźnienie podczas uruchamiania. Plan zużycia ma pewne optymalizacje, aby pomóc skrócić zimny czas rozpoczęcia, w tym ściąganie z wstępnie rozgrzanych funkcji zastępczych, które mają już uruchomiony proces hosta funkcji i języka. |
Plan Premium | Bezterminowo ciepłe wystąpienia, aby uniknąć zimnego startu. |
Dedykowany plan | W przypadku uruchamiania w planie dedykowanym host usługi Functions może działać w sposób ciągły, co oznacza, że zimny start nie jest naprawdę problemem. |
ASE | W przypadku uruchamiania w planie dedykowanym host usługi Functions może działać w sposób ciągły, co oznacza, że zimny start nie jest naprawdę problemem. |
Kubernetes | W zależności od konfiguracji KEDA można skonfigurować aplikacje, aby uniknąć zimnego startu. Jeśli skonfigurowano skalowanie do zera, w przypadku nowych zdarzeń występuje zimny start. |
Limity usługi
Zasób | Plan zużycia | Plan Premium | Dedykowany plan | ASE | Kubernetes |
---|---|---|---|---|---|
Domyślny czas trwania limitu czasu (min) | 5 | 30 | 301 | 30 | 30 |
Maksymalny czas trwania limitu czasu (min) | 10 | bez ruchu7 | bez ruchu przychodzącego2 | Nieograniczony | Nieograniczony |
Maksymalna liczba połączeń wychodzących (na wystąpienie) | 600 aktywnych (łącznie 1200) | Nieograniczony | Nieograniczony | Nieograniczony | Nieograniczony |
Maksymalny rozmiar żądania (MB)3 | 100 | 100 | 100 | 100 | Zależy od klastra |
Maksymalna długośćciągu zapytania 3 | 4096 | 4096 | 4096 | 4096 | Zależy od klastra |
Maksymalna długośćadresu URL żądania 3 | 8192 | 8192 | 8192 | 8192 | Zależy od klastra |
ACU na wystąpienie | 100 | 210-840 | 100-840 | 210-2508 | Cennik usługi AKS |
Maksymalna ilość pamięci (GB na wystąpienie) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Dowolny węzeł jest obsługiwany |
Maksymalna liczba wystąpień (Windows/Linux) | 200/100 | 100/20 | różni się w zależności od jednostki SKU9 | 1009 | Zależy od klastra |
Aplikacje funkcji na plan11 | 100 | 100 | bez ruchu4 | Nieograniczony | Nieograniczony |
Plany usługi App Service | 100 na region | 100 na grupę zasobów | 100 na grupę zasobów | - | - |
Miejsca wdrożenia na aplikację10 | 2 | 3 | 1–209 | 20 | nie dotyczy |
Magazyn5 | 5 GB | 250 GB | 50–1000 GB | 1 TB | nie dotyczy |
Domeny niestandardowe na aplikację | 5006 | 500 | 500 | 500 | nie dotyczy |
Obsługa protokołu SSL dla domeny niestandardowej | dołączone niezwiązane połączenie SSL SNI | niezwiązane połączenia SSL SNI i 1 protokół SSL IP dołączone | niezwiązane połączenia SSL SNI i 1 protokół SSL IP dołączone | niezwiązane połączenia SSL SNI i 1 protokół SSL IP dołączone | nie dotyczy |
1 Domyślnie limit czasu środowiska uruchomieniowego usługi Functions 1.x w planie usługi App Service jest niezwiązany.
2 Wymaga ustawienia planu usługi App Service na zawsze włączone. Płać według standardowych stawek.
3 Te limity są ustawiane na hoście.
4 Rzeczywista liczba aplikacji funkcji, które można hostować, zależy od aktywności aplikacji, rozmiaru wystąpień maszyny i odpowiedniego wykorzystania zasobów.
5 Limit magazynu to całkowity rozmiar zawartości w magazynie tymczasowym we wszystkich aplikacjach w tym samym planie usługi App Service. Plan zużycie używa usługi Azure Files na potrzeby magazynu tymczasowego.
6 Jeśli aplikacja funkcji jest hostowana w planie Zużycie, obsługiwana jest tylko opcja CNAME. W przypadku aplikacji funkcji w planie Premium lub planie usługi App Service można mapować domenę niestandardową przy użyciu rekordu CNAME lub A.
7 Gwarantowane przez maksymalnie 60 minut.
8 Pracowników to role, które hostują aplikacje klienta. Procesy robocze są dostępne w trzech stałych rozmiarach: jeden procesor wirtualny/3,5 GB pamięci RAM; Dwa procesory wirtualne/7 GB pamięci RAM; Cztery procesory wirtualne/14 GB pamięci RAM.
9 Aby uzyskać szczegółowe informacje, zobacz Limity usługi App Service.
10 Łącznie z miejscem produkcyjnym.
11 Obecnie w danej subskrypcji istnieje limit 5000 aplikacji funkcji.
Ograniczenia dotyczące tworzenia nowych aplikacji funkcji w istniejącej grupie zasobów
W niektórych przypadkach podczas próby utworzenia nowego planu hostingu dla aplikacji funkcji w istniejącej grupie zasobów może zostać wyświetlony jeden z następujących błędów:
- Warstwa cenowa nie jest dozwolona w tej grupie zasobów
- <> SKU_name procesy robocze nie są dostępne w grupie <zasobów resource_group_name>
Może się to zdarzyć, gdy spełnione są następujące warunki:
- Aplikację funkcji można utworzyć w istniejącej grupie zasobów, która kiedykolwiek zawierała inną aplikację funkcji lub aplikację internetową. Na przykład aplikacje zużycie systemu Linux nie są obsługiwane w tej samej grupie zasobów co plany Systemu Linux Dedicated lub Linux Premium.
- Nowa aplikacja funkcji jest tworzona w tym samym regionie co poprzednia aplikacja.
- Poprzednia aplikacja jest w jakiś sposób niezgodna z nową aplikacją. Może się to zdarzyć między jednostkami SKU, systemami operacyjnymi lub innymi funkcjami na poziomie platformy, takimi jak obsługa stref dostępności.
Przyczyną takiej sytuacji jest sposób mapowania planów aplikacji funkcji i aplikacji internetowej na różne pule zasobów podczas tworzenia. Różne jednostki SKU wymagają innego zestawu możliwości infrastruktury. Podczas tworzenia aplikacji w grupie zasobów ta grupa zasobów jest mapowana i przypisywana do określonej puli zasobów. Jeśli spróbujesz utworzyć inny plan w tej grupie zasobów, a zamapowana pula nie ma wymaganych zasobów, ten błąd wystąpi.
Gdy wystąpi ten błąd, zamiast tego utwórz aplikację funkcji i plan hostingu w nowej grupie zasobów.
Funkcje sieci
Funkcja | Plan zużycia | Plan Premium | Dedykowany plan | ASE |
---|---|---|---|---|
Ograniczenia przychodzącego adresu IP | ✅Tak | ✅Tak | ✅Tak | ✅Tak |
Przychodzące prywatne punkty końcowe | ❌Nr | ✅Tak | ✅Tak | ✅Tak |
Integracja sieci wirtualnej | ❌Nr | ✅Tak (regionalny) | ✅Tak (regionalna i brama) | ✅Tak |
Wyzwalacze sieci wirtualnej (inne niż HTTP) | ❌Nr | ✅Tak | ✅Tak | ✅Tak |
Połączenia hybrydowe (tylko system Windows) | ❌Nr | ✅Tak | ✅Tak | ✅Tak |
Ograniczenia adresów IP dla ruchu wychodzącego | ❌Nr | ✅Tak | ✅Tak | ✅Tak |
Rozliczenia
Planowanie | Szczegóły |
---|---|
Plan zużycia | Płacisz tylko za czas uruchamiania funkcji. Rozliczenia zależą od liczby wykonań, czasu wykonania oraz użytej pamięci. |
Plan Premium | Plan Premium jest oparty na liczbie sekund rdzeni i pamięci używanej w wymaganych i wstępnie rozgrzanych wystąpieniach. Co najmniej jedno wystąpienie na plan musi być zawsze ciepłe. Ten plan zapewnia najbardziej przewidywalne ceny. |
Dedykowany plan | Opłaty są takie same w przypadku aplikacji funkcji w planie usługi App Service, jak w przypadku innych zasobów usługi App Service, takich jak aplikacje internetowe. |
Środowisko App Service Environment (ASE) | Istnieje płaska miesięczna stawka dla środowiska ASE, która płaci za infrastrukturę i nie zmienia się wraz z rozmiarem środowiska ASE. Istnieje również koszt procesora wirtualnego planu usługi App Service. Wszystkie aplikacje hostowane w środowisku ASE znajdują się w jednostce SKU wyceny „izolowanej” (Isolated). |
Kubernetes | Płacisz tylko koszty klastra Kubernetes; brak dodatkowych rozliczeń dla usługi Functions. Aplikacja funkcji działa jako obciążenie aplikacji na podstawie klastra, podobnie jak zwykła aplikacja. |