Minimalna pamięć masowa — strumień zmian do replikacji danych

Azure Front Door
Azure App Service
Azure Functions
Azure Cosmos DB
Azure Table Storage

W tym artykule przedstawiono rozwiązanie o wysokiej dostępności dla aplikacji internetowej, która zarządza dużymi ilościami danych, które muszą być dostępne w określonym przedziale czasu. Rozwiązanie wykorzystuje usługę Azure Cosmos DB jako podstawowy magazyn danych oraz kanał informacyjny o zmianach usługi Azure Cosmos DB do replikowania danych do tańszej pomocniczej pamięci masowej. Po upływie określonego czasu rozwiązanie używa Azure Functions do usunięcia danych z Azure Cosmos DB. Dane w pamięci pomocniczej pozostają dostępne dłużej na potrzeby audytu i analizy przez inne rozwiązania. Rozwiązanie replikuje dane do różnych usług danych, co zapewnia wysoką trwałość.

Architektura

Diagram pokazujący minimalną architekturę pamięci masowej.

Pobierz plik programu Visio z tą architekturą.

Przepływ danych

Poniższy przepływ danych odpowiada poprzedniemu diagramowi:

  1. Klient uwierzytelnia się przy użyciu Microsoft Entra ID i otrzymuje dostęp do aplikacji internetowych hostowanych w Azure App Service.

  2. Azure Front Door, która jest zaporą i modułem równoważenia obciążenia warstwy 7, przełącza ruch użytkowników do regionu rezerwowego, jeśli wystąpi awaria regionalna.

  3. Usługa App Service hostuje witryny internetowe i internetowe interfejsy API RESTful. Klienci przeglądarki uruchamiają asynchroniczne aplikacje JavaScript i XML korzystające z interfejsów API.

  4. Interfejsy API sieci Web delegują odpowiedzialność za obsługę zadań w tle kodowi hostowanemu w usłudze Functions. Zadania są kolejkowane w kolejkach usługi Azure Queue Storage.

  5. Komunikaty w kolejce uruchamiają funkcje, które wykonują zadania w tle.

  6. Usługa Azure Managed Redis Caches przechowuje dane bazy danych dla funkcji. Rozwiązanie odciąża bazę danych od operacji odczytu w przypadku danych zmieniających się powoli i przyspiesza działanie aplikacji funkcji oraz aplikacji internetowych dzięki użyciu pamięci podręcznej.

  7. Usługa Azure Cosmos DB przechowuje ostatnio wygenerowane dane.

  8. Usługa Azure Cosmos DB wystawia zestawienie zmian, które może służyć do replikowania zmian.

  9. Aplikacja funkcji odczytuje zestawienie zmian i replikuje zmiany do tabel usługi Azure Table Storage. Inna aplikacja funkcjonalna okresowo usuwa wygasłe dane z usługi Azure Cosmos DB.

  10. Usługa Table Storage zapewnia magazyn o niskich kosztach.

Składniki

  • Microsoft Entra ID to usługa zarządzania tożsamościami i dostępem, która może być synchronizowana z katalogiem lokalnym. W tej architekturze uwierzytelnia użytkowników i udziela dostępu do aplikacji internetowych hostowanych w usłudze App Service.

  • Usługa Azure Front Door to bezpieczna sieć dostarczania zawartości i moduł równoważenia obciążenia. W tej architekturze przyspiesza dostarczanie zawartości, zapewnia możliwości trybu failover i chroni aplikacje przed zagrożeniami cybernetycznymi.

  • App Service to w pełni zarządzana usługa, która umożliwia deweloperom tworzenie, wdrażanie, hostowanie i skalowanie aplikacji internetowych. Aplikacje można tworzyć przy użyciu .NET, Node.js, Java, Python lub PHP. Aplikacje mogą działać w kontenerach lub w systemie Windows lub Linux. W tej architekturze usługa App Service hostuje interfejs internetowy i interfejsy API REST dla aplikacji. Aby uzyskać więcej informacji na temat internetowych interfejsów API, zobacz RESTful web API design (Projektowanie internetowego interfejsu API RESTful).

  • Funkcje udostępniają środowisko do uruchamiania małych fragmentów kodu nazywanych funkcjami bez konieczności ustanawiania infrastruktury aplikacji. Służy do przetwarzania danych zbiorczych, integrowania systemów, pracy z urządzeniami Internetu rzeczy (IoT) oraz tworzenia prostych interfejsów API i mikrousług. Za pomocą mikrousług można tworzyć serwery, które łączą się z usługami Azure i zawsze pozostają aktualne. W tej architekturze funkcje uruchamiają zadania w tle, takie jak replikacja danych i usuwanie wygasłych rekordów.

  • Azure Storage to zestaw skalowalnych i bezpiecznych usług w chmurze dla danych, aplikacji i obciążeń. W tej architekturze Storage udostępnia usługę Queue Storage do obsługi komunikatów zadań oraz usługę Table Storage do taniego przechowywania replikowanych danych.

    • Usługa Queue Storage zapewnia proste, ekonomiczne, trwałe kolejkowanie komunikatów dla dużych obciążeń. Ta architektura używa usługi Queue Storage do obsługi komunikatów zadań.

    • Table Storage to magazyn par klucz-wartość NoSQL do szybkiego opracowywania, który korzysta z ogromnych częściowo ustrukturyzowanych zestawów danych. Tabele są bez schematu i dostosowywane zgodnie z potrzebami. Dostęp jest szybki i ekonomiczny dla wielu aplikacji. Ta architektura używa usługi Table Storage do przechowywania zsynchronizowanej i zrestrukturyzowanej kopii danych w usłudze Azure Cosmos DB.

  • Azure Managed Redis to w pełni zarządzana usługa buforowania w pamięci i broker komunikatów na potrzeby udostępniania danych i stanu między zasobami obliczeniowymi. Aby zwiększyć wydajność aplikacji do przetwarzania transakcji online o wysokiej przepływności, zaprojektuj je do skalowania przy użyciu magazynu danych w pamięci, takiego jak Azure Managed Redis. W tej architekturze usługa Redis zarządzana Azure przyspiesza dostęp do często używanych danych, co zwiększa wydajność aplikacji funkcji i aplikacji internetowych.

  • Azure Cosmos DB to rozproszona globalnie wielomodelowa baza danych, która umożliwia elastyczne i niezależne skalowanie przepływności i magazynowania w dowolnej liczbie regionów geograficznych. Zapewnia ona gwarancje przepływności, opóźnienia, dostępności i spójności z kompleksowymi umowami dotyczącymi poziomu usług. W tej architekturze Azure Cosmos DB przechowuje najnowsze dane i emituje zestawienie zmian, którego można użyć do replikowania aktualizacji do usługi Table Storage.

Alternatywy

  • Usługa Azure Traffic Manager kieruje przychodzące żądania DNS w globalnych regionach świadczenia usługi Azure w oparciu o wybrane metody routingu ruchu. Zapewnia również automatyczne przełączenie awaryjne i routowanie wydajnościowe.

  • Azure Container Apps to w pełni zarządzana bezserwerowa usługa kontenera, która umożliwia deweloperom tworzenie i wdrażanie nowoczesnych aplikacji na dużą skalę.

  • Azure Kubernetes Service (AKS) to w pełni zarządzana usługa Kubernetes na potrzeby konteneryzowanego wdrażania aplikacji i zarządzania nimi. Można jej użyć do zaimplementowania architektury mikrousług ze składnikami, które są skalowane niezależnie i na żądanie.

  • Azure Container Instances uruchamia zadania bez konieczności zarządzania infrastrukturą. Jest to przydatne podczas programowania i uruchamiania nieplanowanych zadań.

  • Usługa Azure Service Bus to niezawodna usługa obsługi komunikatów w chmurze na potrzeby prostej integracji hybrydowej. Można go używać zamiast usługi Queue Storage w tej architekturze. Aby uzyskać więcej informacji, zobacz Kolejki magazynowe i kolejki w usłudze Service Bus - porównanie.

Szczegóły scenariusza

To rozwiązanie przechowuje duże ilości danych aplikacji internetowej w Azure Cosmos DB. Aplikacje internetowe, które obsługują ogromne ilości danych, używają Azure Cosmos DB do elastycznego i niezależnego skalowania przepływności i magazynu.

Po wprowadzeniu zmian w bazie danych Azure Cosmos DB kanał informacyjny zmian jest wysyłany do wyzwalacza funkcji sterowanych zdarzeniami. Następnie funkcja uruchamia i replikuje zmiany w tabelach usługi Table Storage, które zapewniają rozwiązanie magazynu o niskich kosztach. Można również koordynować szerszy przepływ danych w dalszych etapach za pomocą potoków Azure Data Factory lub usługi Fabric Data Factory, aby umieszczać dane w strefach analitycznych.

Aplikacja internetowa potrzebuje danych tylko przez ograniczony czas. To rozwiązanie okresowo uruchamia i usuwa wygasłe dane z Azure Cosmos DB, co zmniejsza koszty. Funkcje można wyzwalać na żądanie lub planować ich uruchamianie w określonych godzinach.

Potencjalne przypadki użycia

To rozwiązanie jest odpowiednie dla każdej aplikacji, która:

  • Używa ogromnej ilości danych.
  • Wymaga, aby dane są dostępne w określonym przedziale czasu.
  • Używa danych, które wygasają.

Przykłady obejmują aplikacje, które:

  • Personalizuj środowisko klienta i zwiększaj zaangażowanie przy użyciu dynamicznych źródeł danych i czujników w lokalizacjach fizycznych.

  • Śledź nawyki dotyczące wydatków klientów i zachowanie zakupów.

  • Śledzenie flot pojazdów oraz zwiększanie wydajności i bezpieczeństwa dzięki wykorzystaniu danych dotyczących lokalizacji pojazdów, wydajności i zachowań kierowców.

  • Prognoza pogody.

  • Monitorowanie systemów ruchu i zarządzanie nimi.

  • Analizowanie danych IoT produkcji.

  • Monitorowanie danych miernika inteligentnego.

Kwestie wymagające rozważenia

Te zagadnienia obejmują implementację filarów platformy Azure Well-Architected Framework, która jest zestawem wytycznych, których można użyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Well-Architected Framework.

Reliability

Niezawodność pomaga zapewnić, że aplikacja może spełnić zobowiązania podjęte przez klientów. Aby uzyskać więcej informacji, zobacz Lista kontrolna przeglądu projektu dotycząca niezawodności.

  • Kanał informacyjny zmian w usłudze Azure Cosmos DB gwarantuje dostarczenie co najmniej raz. Zaprojektuj funkcję replikacji tak, aby była idempotentna, dzięki czemu zduplikowane zdarzenia nie będą generować niespójnych danych w usłudze Table Storage.

  • Azure Front Door zapewnia automatyczne przełączanie awaryjne między regionami. Jeśli region podstawowy stanie się niedostępny, ruch jest kierowany do regionu rezerwowego bez ręcznej interwencji.

Optymalizacja kosztów

Optymalizacja kosztów koncentruje się na sposobach zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Lista kontrolna przeglądu projektu dotycząca optymalizacji kosztów.

  • Podstawowa korzyść z kosztów wynika z przenoszenia wygasłych danych z Azure Cosmos DB, która jest rozliczana za jednostkę żądania (RU), do usługi Table Storage, która jest rozliczana za transakcję i za GB przechowywanych. Ten proces jest tańszy w przypadku rzadko używanych danych.

  • Jeśli obciążenie robocze ma przewidywalne wymagania dotyczące przepływności, rozważ pojemność rezerwowaną dla Azure Cosmos DB.

  • Użyj zestawienia zmian na potrzeby replikacji. Ta metoda zmniejsza konserwację kodu w porównaniu z replikacją w podstawowej aplikacji.

  • To rozwiązanie wiąże się z dodatkowymi kosztami magazynu pomocniczego oraz funkcji, które zarządzają replikacją i wygasaniem danych.

Doskonałość operacyjna

Doskonałość operacyjna obejmuje procesy operacyjne, które wdrażają aplikację i zapewniają jej działanie w środowisku produkcyjnym. Aby uzyskać więcej informacji, zobacz Lista kontrolna przeglądu projektu dotycząca doskonałości operacyjnej.

  • Musisz przeprowadzić migrację istniejących danych. Proces migracji wymaga skryptów ad hoc lub procedur do kopiowania starych danych na konta zapisujące. Podczas migracji danych użyj sygnatur czasowych i skopiuj flagi, aby śledzić postęp migracji.

  • Ignoruj strumienie usunięć, które funkcje generują podczas usuwania wpisów z Azure Cosmos DB. Takie podejście uniemożliwia usuwanie wpisów z magazynu pomocniczego tabel Azure.

Wydajność operacyjna

Wydajność odnosi się do możliwości skalowania obciążenia w celu efektywnego zaspokojenia wymagań użytkowników. Aby uzyskać więcej informacji, zobacz listę kontrolną przeglądu projektu pod kątem wydajności.

  • Opóźnienie przetwarzania strumienia zmian wpływa na to, jak szybko dane stają się dostępne w usłudze Table Storage. Aby spełnić wymagania dotyczące opóźnień, przeprowadź skalowanie planu aplikacji funkcji i ustawień wsadowych.

  • Aby uniknąć gorących partycji, wybierz Azure Cosmos DB klucz partycji, który równomiernie dystrybuuje przepływność zapisu między partycjami logicznymi.

  • Azure Managed Redis zmniejsza obciążenie związane z operacjami odczytu w usłudze Azure Cosmos DB w przypadku danych zmieniających się powoli, co obniża opóźnienia i zużycie jednostek żądania (RU).

Współautorzy

Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.

Główny autor:

  • Nabil Siddiqui | Architekt rozwiązań w chmurze — innowacje w zakresie technologii cyfrowych i aplikacji

Inny współautor:

Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki