Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure Functions to oparta na zdarzeniach usługa obliczeniowa na żądanie, która rozszerza istniejącą platformę aplikacji Azure App Service. Dodaje ona możliwości implementowania kodu wyzwalanego przez zdarzenia występujące w Azure, w usłudze partnerskiej i w systemach lokalnych. Za pomocą usługi Functions można tworzyć rozwiązania łączące się ze źródłami danych lub rozwiązaniami do obsługi komunikatów, co ułatwia przetwarzanie i reagowanie na zdarzenia. Funkcje działają w Azure centrach danych, które są złożone z wielu zintegrowanych składników. W środowisku chmury zarządzanej oczekuje się, że maszyny wirtualne mogą być od czasu do czasu resetowane lub przemieszczane, oraz występują aktualizacje systemu. Aplikacje funkcji również prawdopodobnie zależą od zewnętrznych interfejsów API, usług Azure i innych baz danych, które również są podatne na okresową niewiarygodność.
Ten artykuł zawiera szczegółowe informacje o najlepszych rozwiązaniach dotyczących projektowania i wdrażania wydajnych aplikacji funkcji, które pozostają w dobrej kondycji i działają dobrze w środowisku opartym na chmurze.
Wybieranie prawidłowego planu hostingu
Podczas tworzenia aplikacji funkcji w Azure należy wybrać plan hostingu dla aplikacji. Wybrany plan ma wpływ na wydajność, niezawodność i koszt. Azure Functions zapewnia następujące plany hostingu:
Jeśli to możliwe, użyj planu Flex Consumption, aby obsługiwać dynamicznie skalujące się aplikacje.
W kontekście platformy App Service plan Premium , który dynamicznie hostuje twoje funkcje, to plan Elastic Premium (EP). Inne plany dedykowane (App Service) są nazywane premium. Aby uzyskać więcej informacji, zobacz Azure Functions Plan Premium.
Wybrany plan hostingu określa następujące zachowania:
- Sposób, w jaki aplikacja funkcji się skalowuje na podstawie zapotrzebowania oraz jak zarządzana jest alokacja instancji.
- Zasoby dostępne dla każdego wystąpienia aplikacji funkcji.
- Obsługa zaawansowanych funkcji, takich jak łączność Azure Virtual Network.
Aby uzyskać więcej informacji na temat wybierania odpowiedniego planu hostingu i szczegółowego porównania między planami, zobacz Azure Functions opcje hostingu.
Wybierz prawidłowy plan podczas tworzenia aplikacji funkcyjnej. Funkcje zapewniają ograniczoną możliwość przełączania planu hostingu, przede wszystkim między planami konsumpcyjnym a Elastic Premium. Aby uzyskać więcej informacji, zobacz Planowanie migracji.
Poprawnie skonfiguruj magazyn
Funkcje wymagają skojarzenia konta magazynu z aplikacją funkcji. Host usługi Functions używa połączenia konta magazynowego do operacji, takich jak zarządzanie wyzwalaczami i rejestrowanie wykonywania funkcji. Jest również używany podczas dynamicznego skalowania funkcji. Aby uzyskać więcej informacji, zobacz Rozważania dotyczące przechowywania dla funkcji Azure.
Nieprawidłowo skonfigurowany system plików lub konto magazynu w aplikacji funkcji może mieć wpływ na wydajność i dostępność funkcji. Aby uzyskać pomoc dotyczącą rozwiązywania problemów z niepoprawnie skonfigurowanym kontem magazynu, zobacz artykuł dotyczący rozwiązywania problemów z magazynem .
Ustawienia połączenia przechowywania
Aplikacje funkcyjne, które skalują się dynamicznie, mogą być uruchamiane z punktu końcowego Azure Files w ramach konta magazynowego lub z serwerów plików skojarzonych z wystąpieniami rozszerzonymi w poziomie. To zachowanie jest kontrolowane przez następujące ustawienia aplikacji:
Plan Premium i plan Zużycie w Windows obsługują te ustawienia. Plan Flex Consumption nie wymaga tych ustawień i używa kontenera usługi Blob Storage do hostowania pakietów wdrożeniowych zamiast udziału Azure Files.
Podczas tworzenia aplikacji funkcji w portalu Azure lub przy użyciu Azure CLI lub Azure PowerShell te ustawienia dla aplikacji funkcji są tworzone w razie potrzeby. Podczas tworzenia zasobów na podstawie szablonu Azure Resource Manager (szablon usługi ARM) szablon powinien zawierać również WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
W pierwszym wdrożeniu przy użyciu szablonu ARM nie uwzględnij WEBSITE_CONTENTSHARE, który jest generowany dla Ciebie.
Możesz użyć następujących przykładów szablonu usługi ARM, aby ułatwić poprawne skonfigurowanie tych ustawień:
- Plan zużycia
- Dedykowany plan
- Plan Premium z integracją z siecią wirtualną
- Plan zużycia z miejscem wdrożenia
Ważne
Usługa Azure Files nie obsługuje obecnie połączeń opartych na tożsamościach. Plan Flex Consumption w pełni obsługuje tożsamości zarządzane. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji bez Azure Files.
Konfiguracja konta magazynu
Podczas tworzenia aplikacji funkcji należy utworzyć lub połączyć się z kontem ogólnego przeznaczenia Azure Storage obsługującym usługi Blob, Queue i Table Storage. Funkcje opierają się na Azure Storage dla operacji, takich jak zarządzanie wyzwalaczami i rejestrowanie wykonań funkcji. Ciąg połączenia do konta magazynu dla twojej aplikacji funkcji znajduje się w ustawieniach aplikacji AzureWebJobsStorage i WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
Podczas tworzenia tego konta magazynu należy pamiętać o następujących kwestiach:
Aby zmniejszyć opóźnienie, utwórz konto magazynu w tym samym regionie co aplikacja funkcyjna.
Aby zwiększyć wydajność w środowisku produkcyjnym, użyj osobnego konta magazynu dla każdej funkcji aplikacji. Ten aspekt dotyczy szczególnie Durable Functions i funkcji wyzwalanych przez usługę Event Hubs.
W przypadku funkcji wyzwalanych przez usługę Event Hubs nie używaj konta z włączonym Data Lake Storage.
Obsługa dużych zestawów danych
Podczas pracy w systemie Linux można dodać dodatkowy magazyn, montując udział plików. Montowanie udziału jest wygodnym sposobem na przetwarzanie dużego istniejącego zestawu danych przez funkcję. Aby uzyskać więcej informacji, zobacz Montowanie udziałów plików.
Organizowanie funkcji
W ramach rozwiązania prawdopodobnie tworzysz i publikujesz wiele funkcji. Te funkcje są często łączone w jedną aplikację funkcjonalną, ale mogą również działać w oddzielnych aplikacjach funkcjonalnych. W planach hostingu Premium i Dedykowane (App Service) wiele aplikacji funkcji może również współdzielić te same zasoby, uruchamiając je w tym samym planie. Sposób grupowania funkcji i aplikacji funkcji może mieć wpływ na wydajność, skalowanie, konfigurację, wdrażanie i bezpieczeństwo ogólnego rozwiązania.
W przypadku planu Zużycie i Premium wszystkie funkcje w aplikacji funkcji są dynamicznie skalowane razem.
Aby uzyskać więcej informacji na temat organizowania funkcji, zobacz Najlepsze rozwiązania dotyczące organizacji funkcji.
Optymalizowanie wdrożeń
Podczas wdrażania aplikacji funkcji należy pamiętać, że jednostką wdrożenia funkcji w Azure jest aplikacja funkcji. Wszystkie funkcje są wdrażane w aplikacji funkcji w tym samym czasie, zwykle z tego samego pakietu wdrożeniowego.
Rozważ następujące opcje pomyślnego wdrożenia:
Uruchom swoje funkcje z pakietu wdrożeniowego. Ten przebieg z podejścia opartego na pakiecie zapewnia następujące korzyści:
- Zmniejsza ryzyko problemów z blokowaniem kopiowania plików.
- Można wdrożyć bezpośrednio w aplikacji produkcyjnej i nie wyzwala ponownego uruchomienia.
- Wszystkie pliki w pakiecie są dostępne dla aplikacji.
- Poprawia wydajność wdrożeń szablonów ARM.
- Może skrócić czas zimnego uruchamiania, szczególnie w przypadku funkcji Języka JavaScript z dużymi drzewami pakietów npm.
Rozważ użycie ciągłego wdrażania w celu połączenia wdrożeń z rozwiązaniem kontroli źródła. Ciągłe wdrożenia umożliwiają również uruchamianie bezpośrednio z pakietu wdrożeniowego.
W przypadku hostingu planu Premium rozważ dodanie wyzwalacza rozgrzewki, aby zmniejszyć opóźnienie podczas dodawania nowych wystąpień. Aby uzyskać więcej informacji, zobacz Azure Functions wyzwalacz rozgrzewki.
Aby zminimalizować przestój wdrożenia, użyj slotów wdrożeniowych dla planów Zużycie, Premium i Dedykowane. Możesz też skonfigurować aktualizacje stopniowe dla wdrożeń bez przestojów w planie Flex Consumption. Aby uzyskać więcej informacji, zobacz miejsca wdrożenia Azure Functions i strategię aktualizacji witryny w Flex Consumption.
Pisanie niezawodnych funkcji
Postępuj zgodnie z zasadami projektowania, które ułatwiają ogólną wydajność i dostępność funkcji. Te zasady obejmują:
- Unikaj funkcji, które są długo wykonywane
- Planowanie komunikacji między funkcjami
- Pisz funkcje jako bezstanowe
- Pisanie funkcji defensywnych
Błędy przejściowe są typowe w przetwarzaniu w chmurze, dlatego podczas uzyskiwania dostępu do zasobów opartych na chmurze należy użyć wzorca ponawiania prób. Wiele wyzwalaczy i powiązań już implementuje ponawianie.
Priorytetem jest testowanie integracji przez ciągłe testowanie funkcji w kontekście pełnej aplikacji i w ramach potoków automatyzacji budowania.
Projektowanie pod kątem zabezpieczeń
Należy wziąć pod uwagę bezpieczeństwo w fazie planowania, a nie dopiero po przygotowaniu funkcji. Aby uzyskać więcej informacji, zobacz
Rozważ współbieżność
Gdy zapotrzebowanie na aplikację funkcji rośnie w związku z przychodzącymi zdarzeniami, plany Zużycie i Premium skalują aplikacje funkcji w poziomie. Ważne jest, aby zrozumieć, jak aplikacja funkcji reaguje na obciążenie i jak można skonfigurować wyzwalacze do obsługi zdarzeń przychodzących. Aby zapoznać się z ogólnym omówieniem, zobacz skalowanie oparte na zdarzeniach w Azure Functions.
Plany dedykowane (App Service) wymagają, abyś zapewnił skalowanie dla swoich aplikacji funkcji.
Liczba procesów roboczych
W niektórych przypadkach bardziej wydajne jest obsłużenie obciążenia przez utworzenie wielu procesów, nazywanych procesami roboczymi języka, w wystąpieniu przed poziomym skalowaniem. Ustawienie FUNCTIONS_WORKER_PROCESS_COUNT kontroluje maksymalną dozwoloną liczbę procesów roboczych języka. Wartość domyślna tego ustawienia to 1, co oznacza, że wiele procesów nie jest używanych. Po osiągnięciu maksymalnej liczby procesów aplikacja funkcji zostaje rozszerzona do większej liczby wystąpień, aby obsłużyć obciążenie. To ustawienie nie dotyczy funkcji biblioteki klas języka C#, które są uruchamiane w procesie hosta.
Kiedy korzystasz z FUNCTIONS_WORKER_PROCESS_COUNT w planie Premium lub planie dedykowanym (App Service), rozważ liczbę rdzeni zapewnionych przez plan. Na przykład plan EP2 Premium zapewnia dwa rdzenie, więc należy zacząć od wartości 2 i zwiększać ją o dwa w razie potrzeby, do maksymalnej wartości.
Konfiguracja wyzwalacza
Podczas planowania przepływności i skalowania dowiedz się, jak różne typy wyzwalaczy przetwarzają zdarzenia. Niektóre wyzwalacze zapewniają kontrolę nad zachowaniami grupowania i współbieżnością. Dostosowanie tych wartości może pomóc każdej instancji odpowiednio dostosować skalowanie do wymagań wywoływanych funkcji. Opcje te stosuje się do wszystkich wyzwalaczy w aplikacji funkcji i przechowuje się je w pliku host.json aplikacji. Aby uzyskać szczegółowe informacje o ustawieniach, zobacz sekcję Konfiguracja określonego wyzwalacza.
Aby dowiedzieć się więcej na temat przetwarzania strumieni komunikatów przez usługę Functions, zobacz Azure Functions niezawodne przetwarzanie zdarzeń.
Planowanie połączeń
Limity połączeń mają zastosowanie do aplikacji funkcji działających w Planie Zużycia. Te limity mają zastosowanie do każdego wystąpienia. Ze względu na te limity i jako ogólne najlepsze rozwiązanie zoptymalizuj połączenia wychodzące z kodu funkcji. Aby uzyskać więcej informacji, zobacz Zarządzanie połączeniami w Azure Functions.
Zagadnienia specyficzne dla języka
W wybranym języku należy pamiętać o następujących kwestiach:
Użyj tokenów anulowania (tylko w procesie).
Maksymalizowanie dostępności
Zimny start to kluczowa kwestia dla architektur bezserwerowych. Aby uzyskać więcej informacji, zobacz Zimny start. Jeśli zimny start jest problemem dla danego scenariusza, zobacz Omówienie bezserwerowego zimnego startu.
Plany Flex Consumption i Premium są zalecane do zmniejszenia zimnych startów, utrzymując elastyczność skalowania. Skorzystaj z poniższych wskazówek, aby zmniejszyć liczbę zimnych startów i zwiększyć dostępność we wszystkich planach hostingu.
Efektywne monitorowanie
Azure Functions oferuje wbudowaną integrację z usługą aplikacja systemu Azure Insights w celu monitorowania wykonywania Twoich funkcji i śladów zapisywanych przez Twój kod. Aby uzyskać więcej informacji, zobacz Monitorowanie wykonań w Azure Functions. Azure Monitor zapewnia również funkcje monitorowania kondycji samej aplikacji funkcji. Aby uzyskać więcej informacji, zobacz Monitor Azure Functions.
Podczas korzystania z integracji usługi Application Insights w celu monitorowania funkcji należy pamiętać o następujących kwestiach:
Usuń ustawienie aplikacji AzureWebJobsDashboard . To ustawienie było obsługiwane w starszych wersjach usługi Functions. Usunięcie
AzureWebJobsDashboardpoprawia wydajność funkcji.Przejrzyj dzienniki usługi Application Insights. Jeśli brakuje danych, których spodziewasz się znaleźć, rozważ dostosowanie ustawień próbkowania w celu lepszego przechwycenia scenariusza monitorowania. Użyj ustawienia ,
excludedTypesaby wykluczyć niektóre typy z próbkowania, na przykładRequestlubException. Aby uzyskać więcej informacji, zobacz Konfigurowanie próbkowania.
Azure Functions umożliwia również wysyłanie dzienników generowanych przez system i użytkownika do usługi Azure Monitor Logs. Integracja z dziennikami Azure Monitor jest obecnie dostępna w wersji zapoznawczej.
Tworzenie nadmiarowości
Twoje potrzeby biznesowe mogą wymagać, aby funkcje zawsze mogły być dostępne, nawet podczas awarii centrum danych. Aby dowiedzieć się, jak używać podejścia wieloregionalnego w celu zapewnienia ciągłego działania funkcji krytycznych, zobacz Niezawodność w funkcjach Azure.