Udostępnij za pośrednictwem


Opcje hostingu usługi Azure Functions

Podczas tworzenia aplikacji funkcji na platformie Azure należy wybrać opcję hostingu dla aplikacji. Platforma Azure udostępnia następujące opcje hostingu dla kodu funkcji:

Opcja hostingu Usługa Dostępność Obsługa kontenerów
Plan Flex Consumption Azure Functions Podgląd Brak
Plan Premium Azure Functions Wersja ogólnie dostępna Linux
Dedykowany plan Azure Functions Ogólna dostępność Linux
Aplikacje kontenera Azure Container Apps Ogólna dostępność Linux
Plan zużycia Azure Functions Ogólna dostępność Brak

Opcje hostingu usługi Azure Functions są obsługiwane przez infrastrukturę usługi aplikacja systemu Azure na maszynach wirtualnych z systemami Linux i Windows. Wybrana opcja hostingu 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.
  • Obsługa kontenerów systemu Linux.

Wybrany plan ma również wpływ na koszty uruchamiania kodu funkcji. Aby uzyskać więcej informacji, zobacz Rozliczenia.

Ten artykuł zawiera szczegółowe porównanie różnych opcji hostingu. Aby dowiedzieć się więcej na temat uruchamiania kodu funkcji i zarządzania nim w kontenerach systemu Linux, zobacz Obsługa kontenerów systemu Linux w usłudze Azure Functions.

Omówienie planów

Poniżej przedstawiono podsumowanie korzyści z różnych opcji hostingu usługi Azure Functions:

Opcja Świadczenia
Plan Flex Consumption Uzyskaj szybkie skalowanie w poziomie przy użyciu opcji obliczeniowych, sieci wirtualnych i rozliczeń płatności zgodnie z rzeczywistym użyciem.

W planie Flex Consumption wystąpienia hosta usługi Functions są dynamicznie dodawane i usuwane na podstawie skonfigurowanej współbieżności wystąpienia oraz liczby zdarzeń przychodzących.

✔ Zmniejsz liczbę wystąpień przedprowizowanych (zawsze gotowych).
✔ Obsługuje sieci wirtualne w celu zapewnienia dodatkowego bezpieczeństwa.
✔ Płatność, 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 uruchomionych 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.
✔ Chcesz mieć większą kontrolę nad wystąpieniami i chcesz wdrożyć wiele aplikacji funkcji w tym samym planie przy użyciu skalowania opartego na zdarzeniach.
✔ 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ż są udostępniane przez plany zużycia.
✔ Kod musi działać dłużej niż maksymalny czas wykonywania dozwolony w planie Zużycie.
✔ Wymagana jest łączność sieci wirtualnej.
✔ Chcesz udostępnić niestandardowy obraz systemu Linux, w 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 i niedostatecznie wykorzystywane maszyny wirtualne, które już korzystają z innych wystąpień usługi App Service.
✔ Musisz mieć w pełni przewidywalne rozliczenia lub ręcznie skalować wystąpienia.
✔ Chcesz uruchamiać wiele aplikacji internetowych i aplikacji funkcji w tym samym planie
✔ Potrzebujesz dostępu do opcji większych rozmiarów obliczeniowych.
✔ Pełna izolacja obliczeniowa i bezpieczny dostęp sieciowy zapewniany przez środowisko App Service Environment (ASE).
✔ Bardzo wysokie użycie pamięci i wysoka skala (ASE).
Aplikacje kontenera Tworzenie i wdrażanie konteneryzowanych aplikacji funkcji w w pełni zarządzanym środowisku hostowanym przez usługę Azure Container Apps.

Użyj modelu programowania usługi Azure Functions, aby tworzyć aplikacje natywne dla zdarzeń oparte na zdarzeniach, bezserwerowe i natywne dla chmury. Uruchom funkcje wraz z innymi mikrousługami, interfejsami API, witrynami internetowymi i przepływami pracy jako programy hostowane w kontenerach. Rozważ hostowanie funkcji w usłudze Container Apps w następujących sytuacjach:

✔ Chcesz spakować biblioteki niestandardowe przy użyciu kodu funkcji, aby obsługiwać aplikacje biznesowe.
✔ Należy przeprowadzić migrację kodu z lokalnych lub starszych aplikacji do natywnych mikrousług w chmurze uruchomionych w kontenerach.
✔ Jeśli chcesz uniknąć nakładu pracy i złożoności zarządzania klastrami Kubernetes i dedykowanymi obliczeniami.
✔ Funkcje wymagają wysokiej klasy mocy obliczeniowej zapewnianej przez dedykowane zasoby obliczeniowe procesora GPU.
Plan zużycia Płatność za zasoby obliczeniowe tylko wtedy, gdy funkcje są uruchomione (płatność zgodnie z rzeczywistym użyciem) z automatycznym skalowaniem.

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, który zapewnia prawdziwe hostowanie bezserwerowe .
✔ Płatność tylko wtedy, gdy funkcje są uruchomione.
✔ Skaluje się automatycznie, nawet w okresach dużego obciążenia.

Pozostałe tabele w tym artykule porównują opcje hostingu na podstawie różnych funkcji i zachowań.

Obsługa systemów operacyjnych

W tej tabeli przedstawiono obsługę systemu operacyjnego dla opcji hostingu.

Hosting Wdrożenie systemu Linux1 Wdrożenie systemu Windows2
Plan Flex Consumption ✅ Tylko kod
❌ Kontener (nieobsługiwany)
❌ Nieobsługiwane
Plan Premium ✅ Tylko kod
✅ Kontener
✅ Tylko kod
Dedykowany plan ✅ Tylko kod
✅ Kontener
✅ Tylko kod
Aplikacje kontenera ✅ Tylko kontener ❌ Nieobsługiwane
Plan zużycia ✅ Tylko kod
❌ Kontener (nieobsługiwany)
✅ Tylko kod
  1. Linux jest jedynym obsługiwanym systemem operacyjnym dla stosu środowiska uruchomieniowego języka Python.
  2. Wdrożenia systemu Windows są tylko kodem. Funkcje nie obsługują obecnie kontenerów systemu Windows.

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 uniknąć przekroczenia limitu czasu, ważne jest, aby pisać niezawodne funkcje. 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 Flex Consumption 30 Bez ruchu2
Plan Premium 304 Bez ruchu2
Dedykowany plan 304 Bez ruchu3
Aplikacje kontenera 30 Bez ruchu5
Plan zużycia 5 10
  1. Niezależnie od ustawienia limitu czasu aplikacji funkcji maksymalny czas, przez który funkcja wyzwalana przez protokół HTTP może odpowiedzieć na żądanie, wynosi 230 sekund. 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. Nie jest wymuszany maksymalny czas trwania limitu czasu wykonywania. Jednak okres prolongaty dla wykonania funkcji wynosi 60 minut w czasie skalowania dla planów Flex Consumption i Premium, a okres prolongaty wynosi 10 minut podczas aktualizacji platformy.
  3. Wymaga ustawienia planu usługi App Service na zawsze włączone. Okres prolongaty 10 minut jest podawany podczas aktualizacji platformy.
  4. Domyślny limit czasu dla wersji 1.x środowiska uruchomieniowego hosta usługi Functions jest niezwiązany.
  5. Gdy minimalna liczba replik jest ustawiona na zero, domyślny limit czasu zależy od określonych wyzwalaczy używanych w aplikacji.

Obsługa języków

Aby uzyskać szczegółowe informacje na temat bieżącej obsługi stosu języka natywnego w usłudze Functions, zobacz Obsługiwane języki w usłudze Azure Functions.

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 Flex Consumption Skalowanie poszczególnych funkcji. Decyzje o skalowaniu sterowane zdarzeniami są obliczane na podstawie poszczególnych funkcji, co zapewnia bardziej deterministyczny sposób skalowania funkcji w aplikacji. Z wyjątkiem protokołu HTTP, usługi Blob Storage (Event Grid) i rozszerzenia Durable Functions wszystkie inne typy wyzwalaczy funkcji w skali aplikacji w niezależnych wystąpieniach. Wszystkie wyzwalacze HTTP w aplikacji są skalowane razem jako grupa w tych samych wystąpieniach, co wszystkie wyzwalacze usługi Blob Storage (Event Grid). Wszystkie wyzwalacze durable functions współużytkują również wystąpienia i skalują razem. Ograniczone tylko przez całkowite użycie pamięci wszystkich wystąpień w danym regionie. Aby uzyskać więcej informacji, zobacz Pamięć wystąpienia.
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 większej liczby 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
100 (ASE)
Aplikacje kontenera 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 większej liczby wystąpień hosta usługi Functions na podstawie liczby zdarzeń wyzwalanych przez jego funkcje. 300-10004
Plan zużycia Sterowane zdarzeniami. Automatycznie skaluje się w poziomie, nawet w okresach dużego obciążenia. Infrastruktura usługi Functions skaluje zasoby procesora CPU i pamięci przez dodanie większej liczby wystąpień hosta usługi Functions na podstawie liczby przychodzących zdarzeń wyzwalacza. Windows: 200
Linux: 1001
  1. Podczas skalowania w poziomie obecnie istnieje limit 500 wystąpień na subskrypcję na godzinę dla aplikacji systemu Linux w planie 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ć szczegółowe limity dla różnych opcji planu usługi App Service, zobacz Limity planu usługi App Service.
  4. W usłudze Container Apps wartość domyślna to 10 wystąpień, ale można ustawić maksymalną liczbę replik, która ma maksymalnie 1000 wystąpień. To ustawienie jest uznawane tak długo, jak jest dostępny wystarczający limit przydziału rdzeni. Podczas tworzenia aplikacji funkcji w witrynie Azure Portal masz ograniczenie do 300 wystąpień.

Zachowanie zimnego startu

Planowanie Szczegóły
Plan Flex Consumption Obsługuje zawsze gotowe wystąpienia , aby zmniejszyć opóźnienie podczas aprowizowania nowych wystąpień.
Plan Premium Obsługuje zawsze gotowe wystąpienia, aby uniknąć zimnych startów , umożliwiając konserwację co najmniej jednego bezterminowo ciepłego wystąpienia.
Dedykowany plan W przypadku uruchamiania w ramach planu dedykowanego host usługi Functions może działać w sposób ciągły na określonej liczbie wystąpień, co oznacza, że zimny start nie jest naprawdę problemem.
Aplikacje kontenera Zależy od minimalnej liczby replik:
• Jeśli ustawiono wartość zero: aplikacje mogą być skalowane do zera w przypadku bezczynności, a niektóre żądania mogą mieć większe opóźnienie podczas uruchamiania.
• W przypadku ustawienia co najmniej jednego: proces hosta jest uruchamiany w sposób ciągły, co oznacza, że zimny start nie jest problemem.
Plan zużycia Aplikacje mogą być skalowane do zera w przypadku bezczynności, co oznacza, że niektóre żądania mogą mieć większe opóźnienie podczas uruchamiania. Plan zużycia ma pewne optymalizacje, które ułatwiają skrócenie czasu zimnego rozpoczęcia, w tym ściąganie z wstępnie utworzonych funkcji zastępczych, które mają już uruchomione procesy hosta i języka.

Limity usługi

Zasób Plan Flex Consumption Plan Premium Środowiska ASE dedykowanego planu/ Aplikacje kontenera Plan zużycia
Domyślny czas trwania limitu czasu (min) 30 30 301 3016 5
Maksymalny czas trwania limitu czasu (min) bez ruchu przychodzącego9 bez ruchu przychodzącego9 bez ruchu przychodzącego2 bez ruchu17 10
Maksymalna liczba połączeń wychodzących (na wystąpienie) bezgraniczny bezgraniczny bezgraniczny bezgraniczny 600 aktywnych (łącznie 1200)
Maksymalny rozmiar żądania (MB)3 210 210 210 210 210
Maksymalna długośćciągu zapytania 3 4096 4096 4096 4096 4096
Maksymalna długośćadresu URL żądania 3 8192 8192 8192 8192 8192
ACU na wystąpienie 210-840 100-840/210-250 10 Różni się 100 Różni się
Maksymalna ilość pamięci (GB na wystąpienie) 4<sup4 3.5-14 1.75-256/8-256 Różni się 1.5
Maksymalna liczba wystąpień (Windows/Linux) 100/20 różni się w zależności od jednostki SKU/10011 10-30018 200/100 1000 15
Aplikacje funkcji na plan13 100 100 bez ruchu4 bez ruchu4 100
Plany usługi App Service nie dotyczy 100 na grupę zasobów 100 na grupę zasobów nie dotyczy 100 na region
Miejsca wdrożenia na aplikację12 nie dotyczy 3 1–2011 nieobsługiwane 2
Magazyn (tymczasowy)5 0,8 GB 21–140 GB 11–140 GB nie dotyczy 0.5 GB
Magazyn (utrwalone) 0 GB7 250 GB 10–1000 GB11 nie dotyczy 1 GB6,7
Domeny niestandardowe na aplikację 500 500 500 nieobsługiwane 5007
Obsługa protokołu SSL dla domeny niestandardowej 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 nieobsługiwane dołączone niezwiązane połączenie SSL SNI

Uwagi dotyczące limitów usług:

  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. Okres prolongaty 10 minut jest podawany podczas aktualizacji platformy.
  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. W przypadku planów Zużycie w systemie Linux magazyn wynosi obecnie 1,5 GB.
  6. Plan zużycie używa udziału usługi Azure Files dla utrwalonego magazynu. Po podaniu własnego udziału usługi Azure Files określone limity rozmiaru udziału zależą od konta magazynu ustawionego dla WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
  7. W systemie Linux musisz jawnie zainstalować własny udział usługi Azure Files.
  8. 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.
  9. Nie jest wymuszany maksymalny czas trwania limitu czasu wykonywania. Jednak okres prolongaty dla wykonywania funkcji wynosi 60 minut w czasie skalowania w ciągu 10 minut i 10 minut podczas aktualizacji platformy.
  10. Procesy robocze 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.
  11. Aby uzyskać szczegółowe informacje, zobacz Limity usługi App Service.
  12. Uwzględnianie miejsca produkcyjnego.
  13. Obecnie w danej subskrypcji istnieje limit 5000 aplikacji funkcji.
  14. Rozmiary wystąpień planu Flex Consumption są obecnie zdefiniowane jako 2048 MB lub 4096 MB. Aby uzyskać więcej informacji, zobacz Pamięć wystąpienia.
  15. Plan Flex Consumption ma regionalny limit przydziału subskrypcji, który ogranicza całkowite użycie pamięci wszystkich wystąpień w danym regionie. Aby uzyskać więcej informacji, zobacz Pamięć wystąpienia.
  16. Gdy minimalna liczba replik jest ustawiona na zero, domyślny limit czasu zależy od określonych wyzwalaczy używanych w aplikacji.
  17. Gdy minimalna liczba replik jest ustawiona na co najmniej jedną.
  18. W usłudze Container Apps można ustawić maksymalną liczbę replik, która jest honorowana tak długo, jak jest dostępny wystarczający limit przydziału rdzeni.

Funkcje sieci

Funkcja Plan Flex Consumption Plan zużycia Plan Premium Środowiska ASE dedykowanego planu/ Container Apps1
Ograniczenia przychodzącego adresu IP
Przychodzące prywatne punkty końcowe
Integracja sieci wirtualnej cyfra arabska 3
Ograniczenia adresów IP dla ruchu wychodzącego
  1. Aby uzyskać więcej informacji, zobacz Networking in Azure Container Apps environment (Sieć w środowisku usługi Azure Container Apps).
  2. Podczas pracy z wyzwalaczami sieci wirtualnej należy wziąć pod uwagę szczególną uwagę.
  3. Tylko plan dedykowanego/środowiska ASE obsługuje integrację z siecią wirtualną wymaganą przez bramę.

Rozliczenia

Planowanie Szczegóły
Plan Flex Consumption Rozliczenia są oparte na liczbie wykonań, pamięci wystąpień, gdy aktywnie wykonują funkcje, oraz kosztem wszystkich zawsze gotowych wystąpień. Aby uzyskać więcej informacji, zobacz Rozliczenia planu Flex Consumption.
Plan Premium Plan Premium jest oparty na liczbie sekund rdzeni i pamięci używanej w wymaganych i wstępnie utworzonych 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.

W przypadku środowiska ASE istnieje płaska miesięczna stawka, która płaci za infrastrukturę i nie zmienia się wraz z rozmiarem środowiska. 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). Aby uzyskać więcej informacji, zobacz artykuł Omówienie środowiska ASE.
Aplikacje kontenera Rozliczenia w usłudze Azure Container Apps są oparte na typie planu. Aby uzyskać więcej informacji, zobacz Rozliczenia w usłudze Azure Container Apps.
Plan zużycia Płacisz tylko za czas uruchamiania funkcji. Rozliczenia zależą od liczby wykonań, czasu wykonania oraz użytej pamięci.

Aby uzyskać bezpośrednie porównanie kosztów między dynamicznymi planami hostingu (Zużycie, Flex Consumption i 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. Aby uzyskać informacje na temat hostingu usługi Container Apps, zobacz Cennik usługi Azure Container Apps.

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 z użyciem 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ą. Ten błąd może wystąpić 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.

Następne kroki