Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 stronę bezserwerowe na platformie 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.
Usługa Azure Functions może tworzyć izolowane połączenia bazy danych na wywołanie, jeśli klient bazy danych nie jest prawidłowo zarządzany, co może mieć wpływ na wydajność połączenia w ramach wysokiej współbieżności, szczególnie w planie Zużycie. Jednak gdy używa się powiązań lub wyzwalaczy w Cosmos DB, Azure Functions wewnętrznie ponownie wykorzystuje współdzielonego klienta SDK Cosmos DB, zapewniając efektywne wykorzystanie puli połączeń w trakcie wielu wywołań. Usługa Azure Cosmos DB obsługuje zarówno tryby łączności opartej na protokole HTTP, jak i oparte na protokole TCP. Ta architektura obsługuje skalowalne i wysokowydajne obciążenia wymagające dynamicznego dostępu do danych.
Przegląd
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 zmian w celu monitorowania kontenera Azure Cosmos DB pod kątem zmian. Po wprowadzeniu jakichkolwiek zmian w kontenerze strumień zmian jest wysyłany do wyzwalacza, który wywołuje funkcję 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 / Notatka
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 uzyskiwać dostęp do bazy danych z funkcji za pomocą statycznego klienta dla swojego interfejsu API.
Na poniższym diagramie przedstawiono każdą z tych trzech integracji:
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 o wymianie walut (pobrane za pomocą wiązania wejściowego z kontenera wymiany walut) do kanału 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życie wyzwalacza i powiązania wyjściowego usługi Azure Functions dla usługi Azure Cosmos DB
- Wyzwalacz Azure Functions dla Azure Cosmos DB służy do wyzwalania zdarzeń związanych z alertami samochodowymi, takimi jak zapalenie się kontrolki silnika w połączonym samochodzie.
- Gdy pojawi się światło aparatu kontrolnego, dane czujnika są wysyłane do usługi Azure Cosmos DB.
- 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.
- Wyzwalacz jest wywoływany przy każdej zmianie danych w zbiorze danych z czujników, ponieważ wszystkie zmiany są przesyłane strumieniowo za pomocą kanału zmian.
- Warunek progu jest używany w funkcji do wysyłania danych czujnika do działu gwarancji.
- Jeśli temperatura przekracza również pewną wartość, alert jest również wysyłany do właściciela.
- Powiązanie wyjściowe funkcji aktualizuje rekord samochodu w innym kontenerze usługi Azure Cosmos DB w celu przechowywania informacji o zdarzeniu kontrolki silnika.
Na poniższej ilustracji przedstawiono kod napisany w witrynie Azure Portal dla tego wyzwalacza.
Przypadek użycia finansowego — wyzwalacz czasomierza i powiązanie wejściowe
W implementacjach finansowych można wywołać funkcję, gdy saldo konta bankowego spadnie poniżej określonej kwoty.
Implementacja: Wyzwalacz czasowy z powiązaniem wejściowym usługi Azure Cosmos DB
- 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.
- Jeśli saldo jest poniżej progu niskiego salda ustawionego przez użytkownika, wykonaj akcję z funkcji platformy Azure.
- 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.
Przypadek użycia w grach — wyzwalanie i powiązanie danych wyjściowych w usłudze Azure Functions dla usługi Azure Cosmos DB
Po utworzeniu nowego użytkownika w grach, możesz wyszukać innych użytkowników, którzy mogą go 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życie wyzwalacza i powiązania wyjściowego usługi Azure Functions dla usługi Azure Cosmos DB
- 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.
- 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.
- 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.
- Te dane są następnie przechowywane w usłudze Azure Cosmos DB, które następnie można łatwo pobrać przez dowolną aplikację frontową, która pokazuje nowemu użytkownikowi jego połączonych znajomych.
Przypadek użycia handlu detalicznego — wiele funkcji
W implementacjach handlu detalicznego, gdy użytkownik dodaje produkt do koszyka, masz teraz możliwość tworzenia i uruchamiania funkcji dla opcjonalnych komponentów biznesowego workflow.
Implementacja: Wiele wyzwalaczy Azure Functions do nasłuchiwania jednego kontenera w Azure Cosmos DB
- Możesz utworzyć wiele funkcji Azure, dodając wyzwalacze usługi Azure Functions dla Azure Cosmos DB do każdej funkcji — wszystkie z nich nasłuchują tego samego strumienia 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 w Przewodnik po bibliotece przetwarzania zmian.
- 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 kanału zmian, i upewniając się, że nie opóźnią krytycznych zdarzeń przetwarzania zamówień w procesie.
We wszystkich tych przypadkach użycia, ponieważ funkcja odseparowała aplikację, nie musisz ciągle uruchamiać nowych instancji aplikacji. Zamiast tego usługa Azure Functions uruchamia poszczególne funkcje w celu ukończenia odrębnych procesów zgodnie z potrzebami.
Tooling
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.
W portalu usługi Azure Functions można utworzyć wyzwalacz. Aby uzyskać instrukcje z przewodnika Quickstart, zobacz Tworzenie wyzwalacza dla usługi Azure Functions w usłudze Azure Cosmos DB w portalu Azure.
W portalu Azure Cosmos DB możesz dodać wyzwalacz Azure Functions dla Azure Cosmos DB do istniejącej aplikacji funkcji Azure w tej samej grupie zasobów.
W programie Visual Studio możesz utworzyć wyzwalacz przy użyciu narzędzi usługi Azure Functions:
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 "obsługi wszystkiego" ułatwia tworzenie różnych funkcji, które wszystkie przekazują dane 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 usług Functions, które wykonują zapytania i zapisują dane do tego samego kontenera, 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. Po prostu obserwujesz zmiany, na które czekasz.
Brak limitów. Funkcje są wykonywane równolegle, a usługa uruchamia tyle instancji, 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.
Dalsze kroki
Teraz naprawdę połączmy usługi Azure Cosmos DB i Azure Functions.