Udostępnij za pośrednictwem


Przetwarzanie bezserwerowe bazy danych przy użyciu usług Azure Cosmos DB i Azure Functions

DOTYCZY: NoSQL

Przetwarzanie bezserwerowe polega na możliwości skupienia się na poszczególnych elementach logiki, które są powtarzalne i bezstanowe. Te elementy nie wymagają zarządzania infrastrukturą i zużywają zasoby tylko przez sekundy lub milisekundy, dla których są uruchamiane. Podstawowym elementem ruchu przetwarzania bezserwerowego są funkcje udostępniane w ekosystemie platformy Azure przez usługę Azure Functions. Aby dowiedzieć się więcej o innych środowiskach wykonywania bezserwerowych na platformie Azure, zobacz bezserwerowe na stronie platformy Azure .

Dzięki natywnej integracji między usługą Azure Cosmos DB i usługą Azure Functions można tworzyć wyzwalacze bazy danych, powiązania wejściowe i powiązania wyjściowe bezpośrednio z konta usługi Azure Cosmos DB. Korzystając z usług Azure Functions i Azure Cosmos DB, można tworzyć i wdrażać aplikacje bezserwerowe oparte na zdarzeniach z dostępem o małych opóźnieniach do zaawansowanych danych dla globalnej bazy użytkowników.

Omówienie

Usługi Azure Cosmos DB i Azure Functions umożliwiają integrację baz danych i aplikacji bezserwerowych na następujące sposoby:

  • Utwórz wyzwalacz usługi Azure Functions sterowany zdarzeniami dla usługi Azure Cosmos DB. Ten wyzwalacz opiera się na strumieniach zestawienia zmian w celu monitorowania kontenera usługi Azure Cosmos DB pod kątem zmian. Po wprowadzeniu jakichkolwiek zmian w kontenerze strumień zestawienia zmian jest wysyłany do wyzwalacza, który wywołuje funkcję platformy Azure.
  • Alternatywnie powiąż funkcję platformy Azure z kontenerem usługi Azure Cosmos DB przy użyciu powiązania wejściowego. Powiązania wejściowe odczytują dane z kontenera po wykonaniu funkcji.
  • Wiązanie funkcji z kontenerem usługi Azure Cosmos DB przy użyciu powiązania wyjściowego. Powiązania wyjściowe zapisują dane w kontenerze po zakończeniu działania funkcji.

Uwaga

Obecnie wyzwalacz usługi Azure Functions, powiązania wejściowe i powiązania wyjściowe dla usługi Azure Cosmos DB są obsługiwane tylko do użytku z interfejsem API dla noSQL. W przypadku wszystkich innych interfejsów API usługi Azure Cosmos DB należy uzyskać dostęp do bazy danych z funkcji przy użyciu klienta statycznego dla interfejsu API.

Na poniższym diagramie przedstawiono każdą z tych trzech integracji:

Jak zintegrować usługę Azure Cosmos DB i usługę Azure Functions

Wyzwalacz usługi Azure Functions, powiązanie danych wejściowych i powiązanie wyjściowe dla usługi Azure Cosmos DB mogą być używane w następujących kombinacjach:

  • Wyzwalacz usługi Azure Functions dla usługi Azure Cosmos DB może być używany z powiązaniem wyjściowym z innym kontenerem usługi Azure Cosmos DB. Gdy funkcja wykonuje akcję na elemencie w kanale informacyjnym zmian, możesz zapisać go w innym kontenerze (zapisaniu go w tym samym kontenerze, z którego pochodzi, skutecznie utworzy pętlę rekursywną). Możesz też użyć wyzwalacza usługi Azure Functions dla usługi Azure Cosmos DB, aby skutecznie migrować wszystkie zmienione elementy z jednego kontenera do innego kontenera przy użyciu powiązania wyjściowego.
  • Powiązania wejściowe i powiązania wyjściowe dla usługi Azure Cosmos DB mogą być używane w tej samej funkcji platformy Azure. Działa to dobrze w przypadkach, gdy chcesz znaleźć pewne dane z powiązaniem wejściowym, zmodyfikować je w funkcji platformy Azure, a następnie zapisać je w tym samym kontenerze lub innym kontenerze po modyfikacji.
  • Powiązanie wejściowe z kontenerem usługi Azure Cosmos DB może być używane w tej samej funkcji co wyzwalacz usługi Azure Functions dla usługi Azure Cosmos DB i może być również używane z powiązaniem wyjściowym lub bez tego powiązania. Możesz użyć tej kombinacji, aby zastosować aktualne informacje wymiany walut (ściągane z powiązaniem wejściowym do kontenera wymiany) do zestawienia zmian nowych zamówień w usłudze koszyka zakupów. Zaktualizowana suma koszyka zakupów z zastosowaniem bieżącej konwersji waluty może zostać zapisana w trzecim kontenerze przy użyciu powiązania wyjściowego.

Przypadki użycia

W poniższych przypadkach użycia pokazano kilka sposobów, aby jak najlepiej wykorzystać dane usługi Azure Cosmos DB — łącząc dane z usługą Azure Functions opartą na zdarzeniach.

Przypadek użycia IoT — wyzwalacz usługi Azure Functions i powiązanie wyjściowe dla usługi Azure Cosmos DB

W implementacjach IoT można wywołać funkcję, gdy światło silnika kontrolnego jest wyświetlane w połączonym samochodzie.

Implementacja: używanie wyzwalacza i powiązania wyjściowego usługi Azure Functions dla usługi Azure Cosmos DB

  1. Wyzwalacz usługi Azure Functions dla usługi Azure Cosmos DB służy do wyzwalania zdarzeń związanych z alertami samochodowymi, takimi jak światło silnika kontrolnego w połączonym samochodzie.
  2. Gdy pojawi się światło aparatu kontrolnego, dane czujnika są wysyłane do usługi Azure Cosmos DB.
  3. Usługa Azure Cosmos DB tworzy lub aktualizuje nowe dokumenty danych czujnika, a następnie te zmiany są przesyłane strumieniowo do wyzwalacza usługi Azure Functions dla usługi Azure Cosmos DB.
  4. Wyzwalacz jest wywoływany przy każdej zmianie danych do zbierania danych z czujników, ponieważ wszystkie zmiany są przesyłane strumieniowo za pośrednictwem zestawienia zmian.
  5. Warunek progu jest używany w funkcji do wysyłania danych czujnika do działu gwarancji.
  6. Jeśli temperatura jest również określoną wartością, alert jest również wysyłany do właściciela.
  7. Powiązanie wyjściowe funkcji aktualizuje rekord samochodu w innym kontenerze usługi Azure Cosmos DB w celu przechowywania informacji o zdarzeniu aparatu sprawdzania.

Na poniższej ilustracji przedstawiono kod napisany w witrynie Azure Portal dla tego wyzwalacza.

Tworzenie wyzwalacza usługi Azure Functions dla usługi Azure Cosmos DB w witrynie Azure Portal

Przypadek użycia finansowego — wyzwalacz czasomierza i powiązanie wejściowe

W implementacjach finansowych można wywołać funkcję, gdy saldo konta bankowego spadnie w ramach określonej kwoty.

Implementacja: wyzwalacz czasomierza z powiązaniem wejściowym usługi Azure Cosmos DB

  1. Za pomocą wyzwalacza czasomierza można pobrać informacje o saldie konta bankowego przechowywane w kontenerze usługi Azure Cosmos DB w interwałach czasowych przy użyciu powiązania wejściowego.
  2. Jeśli saldo jest poniżej progu niskiego salda ustawionego przez użytkownika, wykonaj akcję z funkcji platformy Azure.
  3. Powiązanie wyjściowe może być integracją usługi SendGrid, która wysyła wiadomość e-mail z konta usługi do adresów e-mail zidentyfikowanych dla każdego z kont o niskim saldu.

Na poniższych obrazach pokazano kod w witrynie Azure Portal dla tego scenariusza.

Index.js pliku wyzwalacza czasomierza dla scenariusza finansowego

Plik Run.csx dla wyzwalacza czasomierza dla scenariusza finansowego

Przypadek użycia gier — powiązanie wyzwalacza i danych wyjściowych usługi Azure Functions dla usługi Azure Cosmos DB

W grach po utworzeniu nowego użytkownika możesz wyszukać innych użytkowników, którzy mogą je znać przy użyciu usługi Azure Cosmos DB dla języka Gremlin. Następnie możesz zapisać wyniki w usłudze Azure Cosmos DB lub bazie danych SQL w celu łatwego pobierania.

Implementacja: używanie wyzwalacza i powiązania wyjściowego usługi Azure Functions dla usługi Azure Cosmos DB

  1. Korzystając z grafowej bazy danych usługi Azure Cosmos DB do przechowywania wszystkich użytkowników, możesz utworzyć nową funkcję z wyzwalaczem usługi Azure Functions dla usługi Azure Cosmos DB.
  2. Za każdym razem, gdy zostanie wstawiony nowy użytkownik, wywoływana jest funkcja, a następnie wynik jest przechowywany przy użyciu powiązania wyjściowego.
  3. Funkcja wysyła zapytanie do bazy danych grafów, aby wyszukać wszystkich użytkowników, którzy są bezpośrednio powiązani z nowym użytkownikiem i zwraca ten zestaw danych do funkcji.
  4. Te dane są następnie przechowywane w usłudze Azure Cosmos DB, które następnie można łatwo pobrać przez dowolną aplikację frontonu, która pokazuje nowego użytkownika swoich połączonych znajomych.

Przypadek użycia handlu detalicznego — wiele funkcji

W implementacjach handlu detalicznego, gdy użytkownik dodaje element do koszyka, masz teraz elastyczność tworzenia i wywoływania funkcji dla opcjonalnych składników potoku biznesowego.

Implementacja: wiele wyzwalaczy usługi Azure Functions na potrzeby nasłuchiwania jednego kontenera w usłudze Azure Cosmos DB

  1. Możesz utworzyć wiele funkcji platformy Azure, dodając wyzwalacze usługi Azure Functions dla usługi Azure Cosmos DB do każdego — wszystkie z nich nasłuchują tego samego zestawienia zmian danych koszyka zakupów. Gdy wiele funkcji nasłuchuje tego samego zestawienia zmian, dla każdej funkcji jest wymagana nowa kolekcja dzierżaw. Aby uzyskać więcej informacji na temat kolekcji dzierżaw, zobacz Omówienie biblioteki procesora zestawienia zmian.
  2. Za każdym razem, gdy nowy element zostanie dodany do koszyka zakupów użytkowników, każda funkcja jest wywoływana niezależnie przez zestawienie zmian z kontenera koszyka zakupów.
    • Jedna funkcja może używać zawartości bieżącego koszyka, aby zmienić wyświetlanie innych elementów, które użytkownik może zainteresować.

    • Inna funkcja może aktualizować sumy spisu.

    • Inna funkcja może wysyłać informacje o klientach dla niektórych produktów do działu marketingu, który wysyła do nich e-mailer promocyjny.

      Dowolny dział może utworzyć usługę Azure Functions dla usługi Azure Cosmos DB, słuchając zestawienia zmian, i upewnij się, że nie opóźni krytycznych zdarzeń przetwarzania zamówień w procesie.

We wszystkich tych przypadkach użycia, ponieważ funkcja odłączyła samą aplikację, nie musisz przez cały czas uruchamiać nowych wystąpień aplikacji. Zamiast tego usługa Azure Functions uruchamia poszczególne funkcje w celu ukończenia odrębnych procesów zgodnie z potrzebami.

Narzędzia

Natywna integracja między usługą Azure Cosmos DB i usługą Azure Functions jest dostępna w witrynie Azure Portal i w programie Visual Studio.

Dlaczego warto wybrać integrację usługi Azure Functions z przetwarzaniem bezserwerowym?

Usługa Azure Functions umożliwia tworzenie skalowalnych jednostek pracy lub zwięzłych elementów logiki, które mogą być uruchamiane na żądanie bez aprowizowania infrastruktury ani zarządzania nią. Korzystając z usługi Azure Functions, nie musisz tworzyć pełnowymiarowej aplikacji, aby reagować na zmiany w bazie danych usługi Azure Cosmos DB, możesz tworzyć małe funkcje wielokrotnego użytku dla określonych zadań. Ponadto możesz również użyć danych usługi Azure Cosmos DB jako danych wejściowych lub wyjściowych funkcji platformy Azure w odpowiedzi na zdarzenia, takie jak żądania HTTP lub wyzwalacz z czasem.

Usługa Azure Cosmos DB jest zalecaną bazą danych dla architektury przetwarzania bezserwerowego z następujących powodów:

  • Natychmiastowy dostęp do wszystkich danych: masz szczegółowy dostęp do każdej przechowywanej wartości, ponieważ usługa Azure Cosmos DB automatycznie indeksuje wszystkie dane domyślnie i natychmiast udostępnia te indeksy. Oznacza to, że możesz stale wykonywać zapytania, aktualizować i dodawać nowe elementy do bazy danych oraz mieć natychmiastowy dostęp za pośrednictwem usługi Azure Functions.

  • Bez schematu. Usługa Azure Cosmos DB jest bez schematu — dlatego jest ona unikatowo w stanie obsłużyć dowolne dane wyjściowe z funkcji platformy Azure. To podejście "do obsługi niczego" ułatwia tworzenie różnych funkcji wyjściowych do usługi Azure Cosmos DB.

  • Skalowalna przepływność. Przepływność można skalować w górę i w dół natychmiast w usłudze Azure Cosmos DB. Jeśli masz setki lub tysiące zapytań usługi Functions i zapisujesz je w tym samym kontenerze, możesz skalować w górę ru/s , aby obsłużyć obciążenie. Wszystkie funkcje mogą działać równolegle przy użyciu przydzielonych jednostek RU/s, a dane mają gwarancję spójności.

  • Replikacja globalna. Dane usługi Azure Cosmos DB można replikować na całym świecie , aby zmniejszyć opóźnienia, lokalizując dane znajdujące się najbliżej lokalizacji użytkowników. Podobnie jak w przypadku wszystkich zapytań usługi Azure Cosmos DB, dane z wyzwalaczy opartych na zdarzeniach są odczytywane z usługi Azure Cosmos DB najbliżej użytkownika.

Jeśli chcesz zintegrować się z usługą Azure Functions w celu przechowywania danych i nie potrzebujesz głębokiego indeksowania lub jeśli musisz przechowywać załączniki i pliki multimedialne, wyzwalacz usługi Azure Blob Storage może być lepszym rozwiązaniem.

Zalety usługi Azure Functions:

  • Sterowane zdarzeniami. Usługa Azure Functions jest oparta na zdarzeniach i może nasłuchiwać zestawienia zmian z usługi Azure Cosmos DB. Oznacza to, że nie musisz tworzyć logiki nasłuchiwania. Wystarczy mieć oko na zmiany, których słuchasz.

  • Brak limitów. Funkcje są wykonywane równolegle, a usługa uruchamia się tak wiele, ile potrzebujesz. Należy ustawić parametry.

  • Dobre dla szybkich zadań. Usługa uruchamia nowe wystąpienia funkcji przy każdym uruchomieniu zdarzenia i zamyka je natychmiast po zakończeniu działania funkcji. Płacisz tylko za czas działania funkcji.

Jeśli nie masz pewności, czy usługi Flow, Logic Apps, Azure Functions lub WebJobs są najlepsze dla twojej implementacji, zobacz Wybieranie między usługami Flow, Logic Apps, Functions i WebJobs.

Następne kroki

Teraz połączmy usługi Azure Cosmos DB i Azure Functions w celu uzyskania rzeczywistych danych: