Udostępnij za pośrednictwem


Zalecenia dotyczące odporności dla usługi Azure Cosmos DB for NoSQL

Ten artykuł zawiera zalecenia dotyczące zapewnienia odporności usługi Azure Cosmos DB for NoSQL. Wiele zaleceń zawiera obsługę zapytań usługi Azure Resource Graph (ARG), które ułatwiają identyfikowanie niezgodnych zasobów.

Macierz wpływu zaleceń dotyczących odporności

Każde zalecenie jest oznaczone zgodnie z następującą macierzą wpływu:

Obraz Wpływ opis
Wys. Wymagana jest natychmiastowa poprawka.
Śred. Poprawka w ciągu 3–6 miesięcy.
Niski Należy przejrzeć.

Podsumowanie zaleceń dotyczących odporności

Kategoria Priorytet Zalecenie
Dostępność Konfigurowanie co najmniej dwóch regionów pod kątem wysokiej dostępności
Odzyskiwanie po awarii Włączanie trybu failover zarządzanego przez usługę dla kont z wieloma regionami z pojedynczym regionem zapisu
Ocena możliwości zapisu w wielu regionach
Wybieranie odpowiedniego trybu spójności odzwierciedlające wymagania dotyczące trwałości danych
Konfigurowanie trybu ciągłej kopii zapasowej
Wydajność systemu Upewnij się, że wyniki zapytania są w pełni opróżnione
Obsługa wzorca pojedynczego w kliencie
Odporność aplikacji Implementowanie logiki ponawiania prób na kliencie
Monitorowanie Monitorowanie kondycji usługi Cosmos DB i konfigurowanie alertów

Dostępność

Konfigurowanie co najmniej dwóch regionów pod kątem wysokiej dostępności

Niezwykle ważne jest włączenie regionu pomocniczego w usłudze Cosmos DB w celu uzyskania wyższej umowy SLA. Nie powoduje to przestoju i jest tak proste, jak wybranie pinezki na mapie. Wystąpienia usługi Cosmos DB korzystające z silnej spójności muszą skonfigurować co najmniej trzy regiony, aby zachować dostępność zapisu w przypadku awarii jednego regionu.

Potencjalne korzyści: zwiększa umowę SLA i odporność.

Dowiedz się więcej: Niezawodność (wysoka dostępność) w usłudze Cosmos DB dla braku bazy danych SQL

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
     array_length(properties.locations) < 2 or
    (array_length(properties.locations) < 3 and properties.consistencyPolicy.defaultConsistencyLevel == 'Strong')
| project recommendationId='cosmos-1', name, id, tags

Odzyskiwanie po awarii

Włączanie trybu failover zarządzanego przez usługę dla kont z wieloma regionami z pojedynczym regionem zapisu

Usługa Cosmos DB oferuje wysoki czas pracy i odporność. Mimo to mogą wystąpić problemy. W przypadku trybu failover zarządzanego przez usługę, jeśli region nie działa, usługa Cosmos DB automatycznie przełącza się do następnego dostępnego regionu, nie wymagając żadnej akcji użytkownika.

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    tobool(properties.enableAutomaticFailover) == false and
    tobool(properties.enableMultipleWriteLocations) == false
| project recommendationId='cosmos-2', name, id, tags

Ocena możliwości zapisu w wielu regionach

Funkcja zapisu w wielu regionach umożliwia projektowanie aplikacji, które są wysoce dostępne w wielu regionach, chociaż wymaga starannej uwagi na wymagania dotyczące spójności i rozwiązywania konfliktów. Nieprawidłowa konfiguracja może zmniejszyć dostępność i spowodować uszkodzenie danych z powodu nieobsługiwanych konfliktów.

Potencjalne korzyści: zwiększa wysoką dostępność.

Dowiedz się więcej:

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags

Wybieranie odpowiedniego trybu spójności odzwierciedlające wymagania dotyczące trwałości danych

W globalnie rozproszonej bazie danych poziom spójności wpływa na trwałość danych podczas awarii regionalnych. Omówienie tolerancji utraty danych na potrzeby planowania odzyskiwania. Użyj spójności sesji, chyba że jest wymagana silniejsza, akceptując wyższe opóźnienia zapisu i potencjalny wpływ regionu zapisu na awarie tylko do odczytu.

Potencjalne korzyści: zwiększa trwałość i odzyskiwanie danych.

Dowiedz się więcej: Poziomy spójności w usłudze Azure Cosmos DB

Konfigurowanie trybu ciągłej kopii zapasowej

Tworzenie kopii zapasowej usługi Cosmos DB jest zawsze włączone, co zapewnia ochronę przed naruszeniami danych. Tryb ciągły umożliwia samoobsługowe przywracanie do punktu wstępnego wpadki, w przeciwieństwie do trybu okresowego, który wymaga kontaktu z pomocą techniczną firmy Microsoft, co prowadzi do dłuższych czasów przywracania.

Potencjalne korzyści: szybsze samoobsługowe przywracanie danych.

Dowiedz się więcej: Ciągła kopia zapasowa z funkcją przywracania do punktu w czasie w usłudze Azure Cosmos DB

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    properties.backupPolicy.type == 'Periodic' and
    properties.enableMultipleWriteLocations == false and
    properties.enableAnalyticalStorage == false
| project recommendationId='cosmos-5', name, id, tags

Wydajność systemu

Upewnij się, że wyniki zapytania są w pełni opróżnione

Usługa Cosmos DB ma limit odpowiedzi o rozmiarze 4 MB, co prowadzi do wyników podzielonych na strony dla dużych lub obejmujących partycje zapytań. Każda strona zawiera dostępność i udostępnia token kontynuacji dla następnego. Pętla while w kodzie jest niezbędna do przechodzenia przez wszystkie strony do momentu ukończenia.

Potencjalne korzyści: maksymalizuje wydajność pobierania danych.

Dowiedz się więcej: stronicowanie w usłudze Azure Cosmos DB dla braku bazy danych SQL.

Obsługa wzorca pojedynczego w kliencie

Używanie pojedynczego wystąpienia klienta zestawu SDK dla każdego konta i aplikacji ma kluczowe znaczenie, ponieważ połączenia są powiązane z klientem. Środowiska obliczeniowe mają limit otwartych połączeń, co wpływa na łączność po przekroczeniu.

Potencjalne korzyści: Optymalizuje połączenia i wydajność.

Dowiedz się więcej: Projektowanie odpornych aplikacji przy użyciu zestawów SDK usługi Azure Cosmos DB.

Odporność aplikacji

Implementowanie logiki ponawiania prób na kliencie

Zestawy SDK usługi Cosmos DB automatycznie zarządzają wieloma błędami przejściowymi za pośrednictwem ponownych prób. Mimo to ważne jest, aby aplikacje implementować dodatkowe zasady ponawiania prób przeznaczone dla określonych przypadków, których zestawy SDK nie mogą ogólnie rozwiązać, zapewniając bardziej niezawodną obsługę błędów.

Potencjalne korzyści: zwiększa odporność obsługi błędów.

Dowiedz się więcej: Projektowanie odpornych aplikacji przy użyciu zestawów SDK usługi Azure Cosmos DB.

Monitorowanie

Monitorowanie kondycji usługi Cosmos DB i konfigurowanie alertów

Dobrym rozwiązaniem jest monitorowanie dostępności i czasu odpowiedzi zasobów usługi Azure Cosmos DB oraz konfigurowanie alertów dla obciążenia. Dzięki temu będziesz aktywnie obsługiwać nieprzewidziane zdarzenia.

Potencjalne korzyści: proaktywne zarządzanie problemami.

Dowiedz się więcej: Tworzenie alertów dla usługi Azure Cosmos DB przy użyciu usługi Azure Monitor