Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące niezawodnej usługi Azure Functions

Usługa Azure Functions to oparte na zdarzeniach środowisko obliczeniowe na żądanie, które rozszerza istniejącą platformę aplikacji usługi aplikacja systemu Azure z funkcjami implementowania kodu wyzwalanego przez zdarzenia występujące na platformie Azure, w usługach innych firm i w systemach lokalnych. Usługa Functions umożliwia tworzenie rozwiązań przez łączenie 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 centrach danych platformy Azure, które są złożone z wielu zintegrowanych składników. W środowisku hostowanej chmury oczekuje się, że maszyny wirtualne mogą od czasu do czasu ponownie uruchamiać lub przenosić, a zostaną wykonane uaktualnienia systemów. Aplikacje funkcji również prawdopodobnie zależą od zewnętrznych interfejsów API, usług platformy Azure i innych baz danych, które również są podatne na okresowe braki odpowiedzialności.

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 na platformie Azure należy wybrać plan hostingu dla aplikacji. Wybrany plan ma wpływ na wydajność, niezawodność i koszt. Są to plany hostingu udostępniane przez usługę Azure Functions:

W kontekście platformy App Service plan Premium używany do dynamicznego hostowania funkcji to plan Elastic Premium (EP). Istnieją inne plany dedykowane (App Service) o nazwie Premium. Aby dowiedzieć się więcej, zobacz artykuł Dotyczący planu Premium.

Wybrany plan hostingu określa następujące zachowania:

  • Sposób skalowania aplikacji funkcji na podstawie zapotrzebowania i sposobu zarządzania alokacją wystąpień.
  • Zasoby dostępne dla każdego wystąpienia aplikacji funkcji.
  • Obsługa zaawansowanych funkcji, takich jak łączność z usługą Azure Virtual Network.

Aby dowiedzieć się więcej na temat wybierania odpowiedniego planu hostingu i szczegółowego porównania planów, zobacz Opcje hostingu usługi Azure Functions.

Ważne jest, aby wybrać prawidłowy plan podczas tworzenia aplikacji funkcji. Funkcje zapewniają ograniczoną możliwość przełączania planu hostingu przede wszystkim między planami Zużycie i Elastic Premium. Aby dowiedzieć się więcej, zobacz Planowanie migracji.

Poprawnie skonfiguruj magazyn

Funkcje wymagają skojarzenia konta magazynu z aplikacją funkcji. Połączenie konta magazynu jest używane przez hosta usługi Functions na potrzeby operacji, takich jak zarządzanie wyzwalaczami i wykonywanie funkcji rejestrowania. Jest on również używany podczas dynamicznego skalowania aplikacji funkcji. Aby dowiedzieć się więcej, zobacz Zagadnienia dotyczące magazynu dla usługi Azure Functions.

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 magazynu

Aplikacje funkcji skalowane dynamicznie mogą być uruchamiane z punktu końcowego usługi Azure Files na koncie magazynu lub z serwerów plików skojarzonych z wystąpieniami skalowanymi w poziomie. To zachowanie jest kontrolowane przez następujące ustawienia aplikacji:

Te ustawienia są obsługiwane tylko wtedy, gdy korzystasz z planu Premium lub planu Zużycie w systemie Windows.

Podczas tworzenia aplikacji funkcji w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell te ustawienia są tworzone dla aplikacji funkcji w razie potrzeby. Podczas tworzenia zasobów na podstawie szablonu usługi Azure Resource Manager (szablonu usługi ARM) należy również dołączyć WEBSITE_CONTENTAZUREFILECONNECTIONSTRING go do szablonu.

W pierwszym wdrożeniu przy użyciu szablonu usługi ARM nie uwzględnij WEBSITE_CONTENTSHAREelementu , 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ń:

Konfiguracja konta magazynu

Podczas tworzenia aplikacji funkcji musisz utworzyć konto usługi Azure Storage ogólnego przeznaczenia, które obsługuje magazyn obiektów blob, kolejek i tabel, albo połączyć takie konto. Usługa Functions korzysta z usługi Azure Storage na potrzeby operacji, takich jak zarządzanie wyzwalaczami i rejestrowanie wykonań funkcji. Konto magazynu parametry połączenia aplikacji funkcji znajduje się w AzureWebJobsStorage ustawieniach aplikacji 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 funkcji.

  • Aby zwiększyć wydajność w środowisku produkcyjnym, użyj oddzielnego konta magazynu dla każdej aplikacji funkcji. Dotyczy to szczególnie funkcji wyzwalanych przez rozszerzenie Durable Functions i usługi Event Hubs.

  • W przypadku funkcji wyzwalanych przez usługę Event Hubs nie używaj konta z włączoną usługą Data Lake Storage.

Obsługa dużych zestawów danych

W przypadku uruchamiania w systemie Linux można dodać dodatkowy magazyn, instalowania udziału plików. Instalowanie udziału to wygodny sposób przetwarzania dużego istniejącego zestawu danych przez funkcję. Aby dowiedzieć się więcej, zobacz Instalowanie 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ę funkcji, ale mogą również działać w oddzielnych aplikacjach funkcji. 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ą wdrażania funkcji na platformie Azure jest aplikacja funkcji. Wszystkie funkcje w aplikacji funkcji są wdrażane w tym samym czasie, zwykle z tego samego pakietu wdrożeniowego.

Rozważ następujące opcje pomyślnego wdrożenia:

  • Funkcje są uruchamiane 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, co powoduje ponowne uruchomienie.
    • Dowiedz się, że wszystkie pliki w pakiecie są dostępne dla aplikacji.
    • Poprawia wydajność wdrożeń szablonów usługi ARM.
    • Może skrócić czasy 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 z pakietu wdrożeniowego.

  • W przypadku hostingu planu Premium rozważ dodanie wyzwalacza rozgrzewki, aby zmniejszyć opóźnienie podczas dodawania nowych wystąpień. Aby dowiedzieć się więcej, zobacz Wyzwalacz rozgrzewania usługi Azure Functions.

  • Aby zminimalizować przestoje wdrożenia i umożliwić wycofywanie wdrożeń, rozważ użycie miejsc wdrożenia. Aby dowiedzieć się więcej, zobacz Miejsca wdrożenia usługi Azure Functions.

Pisanie niezawodnych funkcji

Istnieje kilka zasad projektowania, które można stosować podczas pisania kodu funkcji, które ułatwiają ogólną wydajność i dostępność funkcji. Te zasady obejmują:

Ponieważ błędy przejściowe są powszechne w przetwarzaniu w chmurze, należy użyć wzorca ponawiania próby podczas uzyskiwania dostępu do zasobów opartych na chmurze. Wiele wyzwalaczy i powiązań już implementuje ponawianie.

Projektowanie pod kątem zabezpieczeń

Bezpieczeństwo jest najlepiej brane pod uwagę w fazie planowania, a nie po zakończeniu działania funkcji. Aby dowiedzieć się, jak bezpiecznie opracowywać i wdrażać funkcje, zobacz Zabezpieczanie usługi Azure Functions.

Rozważ współbieżność

Gdy zapotrzebowanie opiera się na aplikacji funkcji w wyniku zdarzeń przychodzących, aplikacje funkcji działające w planach Zużycie i Premium są skalowane 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 usłudze Azure Functions.

Plany dedykowane (App Service) wymagają zapewnienia skalowania w poziomie 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 skalowaniem w poziomie. Dozwolona maksymalna liczba dozwolonych procesów roboczych języka jest kontrolowana przez ustawienie FUNCTIONS_WORKER_PROCESS_COUNT . 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 jest skalowana w poziomie do większej liczby wystąpień w celu obsługi obciążenia. To ustawienie nie dotyczy funkcji biblioteki klas języka C#, które są uruchamiane w procesie hosta.

W przypadku korzystania z FUNCTIONS_WORKER_PROCESS_COUNT planu Premium lub planu dedykowanego (App Service) należy pamiętać o liczbie rdzeni udostępnianych przez plan. Na przykład plan EP2 Premium zapewnia dwa rdzenie, więc należy zacząć od wartości 2 i zwiększyć o dwie w razie potrzeby maksymalnie.

Konfiguracji wyzwalacza

Podczas planowania przepływności i skalowania ważne jest, aby zrozumieć, jak różne typy wyzwalaczy przetwarzają zdarzenia. Niektóre wyzwalacze umożliwiają kontrolowanie zachowań dzielenia na partie i zarządzanie współbieżnością. Często dostosowanie wartości w tych opcjach może pomóc każdemu wystąpieniu odpowiednio skalować pod kątem wymagań wywoływanych funkcji. Te opcje konfiguracji są stosowane do wszystkich wyzwalaczy w aplikacji funkcji i są przechowywane w pliku host.json dla aplikacji. Aby uzyskać szczegółowe informacje o ustawieniach, zobacz sekcję Konfiguracja konkretnej dokumentacji wyzwalacza.

Aby dowiedzieć się więcej o sposobie przetwarzania strumieni komunikatów przez usługę Functions, zobacz Niezawodne przetwarzanie zdarzeń usługi Azure Functions.

Planowanie połączeń

Aplikacje funkcji uruchomione w planie Zużycie podlegają limitom połączeń. Te limity są wymuszane dla poszczególnych wystąpień. Ze względu na te limity i jako ogólne najlepsze rozwiązanie należy zoptymalizować połączenia wychodzące z kodu funkcji. Aby dowiedzieć się więcej, zobacz Zarządzanie połączeniami w usłudze Azure Functions.

Zagadnienia specyficzne dla języka

W wybranym języku należy pamiętać o następujących kwestiach:

Maksymalizowanie dostępności

Zimny start to kluczowa kwestia dla architektur bezserwerowych. Aby dowiedzieć się więcej, zobacz Zimny start. Jeśli zimny start jest problemem dla twojego scenariusza, możesz znaleźć bardziej szczegółowe informacje w artykule Omówienie bezserwerowego zimnego startu .

Plan Premium jest zalecanym planem redukcji zimnych startów przy zachowaniu dynamicznej skali. Skorzystaj z poniższych wskazówek, aby zmniejszyć liczbę zimnych startów i zwiększyć dostępność we wszystkich trzech planach hostingu.

Planowanie Wskazówki
Plan Premium Implementowanie wyzwalacza rozgrzewki w aplikacji funkcji
Ustawianie wartości dla zawsze gotowych wystąpień i maksymalnego limitu szybkości
Korzystanie z obsługi wyzwalacza sieci wirtualnej w przypadku korzystania z wyzwalaczy innych niż HTTP w sieci wirtualnej
Plany dedykowane Uruchom co najmniej dwa wystąpienia z włączoną aplikacja systemu Azure service health check
Implementowanie skalowania automatycznego
Plan zużycia • Przejrzyj użycie wzorców pojedynczych i ustawień współbieżności dla powiązań i wyzwalaczy, aby uniknąć sztucznego wprowadzania limitów dotyczących skalowania aplikacji funkcji.
Przejrzyj functionAppScaleLimit ustawienie, które może ograniczyć skalowanie w poziomie
• Sprawdź dzienny limit przydziału użycia (GB-s) ustawiony podczas opracowywania i testowania. Rozważ usunięcie tego limitu w środowiskach produkcyjnych.

Efektywne monitorowanie

Usługa Azure Functions oferuje wbudowaną integrację z usługą aplikacja systemu Azure Insights w celu monitorowania wykonywania funkcji i śladów napisanych na podstawie kodu. Aby dowiedzieć się więcej, zobacz Monitorowanie usługi Azure Functions. Usługa Azure Monitor udostępnia również funkcje monitorowania kondycji samej aplikacji funkcji. Aby dowiedzieć się więcej, zobacz Monitorowanie za pomocą usługi Azure Monitor.

Podczas korzystania z integracji usługi Application Insights w celu monitorowania funkcji należy pamiętać o następujących kwestiach:

  • Upewnij się, że ustawienie aplikacji AzureWebJobsDashboard zostało usunięte. To ustawienie było obsługiwane w starszej wersji usługi Functions. Jeśli istnieje, usunięcie AzureWebJobsDashboard zwiększa 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. Możesz użyć excludedTypes tego ustawienia, aby wykluczyć niektóre typy z próbkowania, na przykład Request lub Exception. Aby dowiedzieć się więcej, zobacz Konfigurowanie próbkowania.

Usługa Azure Functions umożliwia również wysyłanie dzienników generowanych przez system i generowanych przez użytkownika do dzienników usługi Azure Monitor. Integracja z dziennikami usługi 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 obejmującego wiele regionów, aby zachować zawsze uruchomione funkcje krytyczne, zobacz Azure Functions geo-disaster recovery and high-availability (Odzyskiwanie geograficzne i wysoka dostępność w usłudze Azure Functions).

Następne kroki

Zarządzanie aplikacją funkcji