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
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:
- Globalna dystrybucja danych przy użyciu usługi Azure Cosmos DB
- Typy konfliktów i zasady rozwiązywania problemów podczas korzystania z wielu regionów zapisu
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