Aanbevelingen voor tolerantie voor Azure Cosmos DB for NoSQL
Dit artikel bevat aanbevelingen voor het bereiken van tolerantie voor Azure Cosmos DB voor NoSQL. Veel van de aanbevelingen bevatten ondersteunende ARG-query's (Azure Resource Graph) om niet-compatibele resources te identificeren.
Impactmatrix voor aanbevelingen voor tolerantie
Elke aanbeveling wordt gemarkeerd in overeenstemming met de volgende impactmatrix:
Afbeelding | Impact | Beschrijving |
---|---|---|
Hoog | Onmiddellijke oplossing nodig. | |
Gemiddeld | Herstel binnen 3-6 maanden. | |
Beperkt | Moet worden gecontroleerd. |
Samenvatting van aanbevelingen voor tolerantie
Beschikbaarheid
Ten minste twee regio's configureren voor hoge beschikbaarheid
Het is van cruciaal belang om een secundaire regio in uw Cosmos DB in te schakelen voor een hogere SLA. Als u dit doet, treedt er geen downtime op en is het net zo eenvoudig als het selecteren van een speld op de kaart. Cosmos DB-exemplaren die gebruikmaken van sterke consistentie moeten ten minste drie regio's configureren om de beschikbaarheid van schrijfbewerkingen te behouden als er één regiofout optreedt.
Mogelijke voordelen: verbetert sla en tolerantie.
Meer informatie: Betrouwbaarheid (hoge beschikbaarheid) in Cosmos DB voor geen 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
Herstel na noodgeval
Door de service beheerde failover inschakelen voor accounts met meerdere regio's met één schrijfregio
Cosmos DB biedt hoge uptime en tolerantie. Toch kunnen er problemen ontstaan. Als een regio niet beschikbaar is, schakelt Cosmos DB automatisch over naar de volgende beschikbare regio, waarvoor geen gebruikersactie is vereist.
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
Schrijfmogelijkheid voor meerdere regio's evalueren
Schrijfmogelijkheden voor meerdere regio's maken het mogelijk om toepassingen te ontwerpen die maximaal beschikbaar zijn in meerdere regio's, hoewel er zorgvuldig aandacht wordt besteed aan consistentievereisten en conflictoplossing. Onjuiste installatie kan de beschikbaarheid verminderen en beschadiging van gegevens veroorzaken vanwege niet-verwerkte conflicten.
Mogelijke voordelen: verbetert hoge beschikbaarheid.
Meer informatie:
- Gegevens wereldwijd distribueren met Azure Cosmos DB
- Conflicttypen en oplossingsbeleid bij gebruik van meerdere schrijfregio's
Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
array_length(properties.locations) > 1 and
properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags
De juiste consistentiemodus kiezen die de vereisten voor duurzaamheid van gegevens weergeeft
In een wereldwijd gedistribueerde database heeft consistentieniveau invloed op de duurzaamheid van gegevens tijdens regionale storingen. Inzicht in gegevensverliestolerantie voor herstelplanning. Gebruik sessieconsistentie tenzij sterker nodig is, waarbij hogere schrijflatenties en mogelijke gevolgen voor schrijfregio's worden geaccepteerd als gevolg van storingen met het kenmerk Alleen-lezen.
Mogelijke voordelen: verbetert de duurzaamheid en het herstel van gegevens.
Meer informatie: Consistentieniveaus in Azure Cosmos DB
Continue back-upmodus configureren
De back-up van Cosmos DB is altijd ingeschakeld en biedt bescherming tegen gegevensfouten. Met de continue modus kunt u zelf herstel uitvoeren naar een pre-mishappunt, in tegenstelling tot de periodieke modus, waarvoor contact moet worden opgenomen met microsoft-ondersteuning, wat leidt tot langere hersteltijden.
Mogelijke voordelen: sneller zelfherstel van gegevens.
Meer informatie: Continue back-up met functie voor herstel naar een bepaald tijdstip in 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
Systeemefficiëntie
Zorg ervoor dat queryresultaten volledig leeg zijn
Cosmos DB heeft een reactielimiet van 4 MB, wat leidt tot gepagineerde resultaten voor grote of partitie-spanningsquery's. Elke pagina toont beschikbaarheid en biedt een vervolgtoken voor de volgende. Een tijdje lus in code is nodig om alle pagina's te doorlopen totdat deze is voltooid.
Mogelijke voordelen: maximaliseert de efficiëntie van het ophalen van gegevens.
Meer informatie: Paginering in Azure Cosmos DB voor geen SQL.
Singleton-patroon in uw client onderhouden
Het gebruik van één exemplaar van de SDK-client voor elk account en elke toepassing is cruciaal omdat verbindingen aan de client zijn gekoppeld. Rekenomgevingen hebben een limiet voor open verbindingen die van invloed zijn op de connectiviteit wanneer deze worden overschreden.
Mogelijke voordelen: optimaliseert verbindingen en efficiëntie.
Meer informatie: Flexibele toepassingen ontwerpen met Azure Cosmos DB SDK's.
Toepassingstolerantie
Logica voor opnieuw proberen implementeren in uw client
Cosmos DB SDK's beheren automatisch veel tijdelijke fouten via nieuwe pogingen. Ondanks dit is het van cruciaal belang dat toepassingen aanvullende beleidsregels voor opnieuw proberen implementeren die gericht zijn op specifieke gevallen die de SDK's niet algemeen kunnen aanpakken, waardoor een robuustere foutafhandeling mogelijk is.
Mogelijke voordelen: verbetert de tolerantie voor foutafhandeling.
Meer informatie: Flexibele toepassingen ontwerpen met Azure Cosmos DB SDK's.
Controleren
Cosmos DB-status bewaken en waarschuwingen instellen
Het bewaken van de beschikbaarheid en reactiesnelheid van Azure Cosmos DB-resources en het instellen van waarschuwingen voor uw workload is een goede gewoonte. Dit zorgt ervoor dat u proactief blijft bij het afhandelen van onvoorziene gebeurtenissen.
Mogelijke voordelen: proactief probleembeheer.
Meer informatie: Waarschuwingen maken voor Azure Cosmos DB met behulp van Azure Monitor