Hoe de beschikbaarheid van Azure Cosmos DB te maximaliseren

De meeste e-commerce applicaties hebben een zero-tolerantie voor enige downtime. Elke impact op de applicatiebronnen kan de algehele beschikbaarheidsstatistieken van de site beïnvloeden. Azure Cosmos-database is een van de belangrijkste NoSQL-databases die in de industrie wordt gebruikt. Hoewel de Azure Cosmos zelf 99,99% minimale beschikbaarheid biedt voor een enkele regio zonder een beschikbaarheidszone, hoe kunnen we de databasebeschikbaarheid verder verbeteren met de opties die beschikbaar zijn in de Azure Cosmos?

Multi-Region Lezen en Schrijven

Lezen in een enkele regio zal de beschikbaarheid beïnvloeden en zal ook leiden tot een enkel punt van falen. Daarom moeten leesintensievere applicaties ten minste multi-region lezen inschakelen, hoewel multi-region schrijven geen optie is voor een applicatie. Maar multi-region schrijven biedt een grotere beschikbaarheid voor zowel lees- als schrijfintensievere applicaties.

Met de multi-region schrijfcapaciteit kunt u multi-master replicatie inschakelen, waarbij alle geconfigureerde regio’s als schrijf-eindpunten kunnen fungeren.

Beste Praktijken

  • Kies regio’s die dichter bij de regio liggen waar de applicatie is gedeployd.
  • Configureer meerdere voorkeurregio’s op basis van de vereisten van de applicatie om de beschikbaarheid te verbeteren.
  • Zet meer dan één voorkeurregio in de applicatie voor lezen en schrijven om de beschikbaarheid te verbeteren en de latentie te verminderen.
  • Zet de voorkeurregio’s in de volgorde van de huidige of dichtstbijzijnde regio’s van de applicatie eerst in de lijst.

Applicatie Gedeployd in West VS 2

Java

 

//Configureer de applicatie die is gedeployd in West VS 2 zoals hieronder

import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;

// ...

CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
    .setEndpoint(accountEndpoint)
    .setKey(accountKey)
    .setPreferredRegions(Arrays.asList("West US 2", "East US"));

CosmosClient client = clientBuilder.buildClient();

// 

Applicatie Gedeployd in Oost VS

Java

 

//Configureer de applicatie die in East US is ingezet zoals hieronder
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;

// ...

CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
    .setEndpoint(accountEndpoint)
    .setKey(accountKey)
    .setPreferredRegions(Arrays.asList( "East US","West US 2"));

CosmosClient client = clientBuilder.buildClient();

// 

Conclusie

Hoewel het inschakelen van multi-regio lezen en schrijven kan zorgen voor een grotere beschikbaarheid, helpt het configureren van de applicatie voor lezen en schrijven dichter bij de regio waar deze wordt ingezet en het bieden van meer dan één voorkeursregio de applicatie om onmiddellijk terug te vallen op de beschikbare regio zonder enige handmatige tussenkomst.

Consistentieniveaus

Kies consistentieniveaus op basis van de vereisten van de applicatie. Hogere verwachtingen van consistentie resulteren doorgaans in verminderde beschikbaarheid. Als de applicatie sterke gegevensconsistentie vereist, zorg er dan voor dat deze mogelijke hogere latenties kan verdragen. Omgekeerd, als zwakkere consistentie acceptabel is, kan de applicatie profiteren van verbeterde doorvoer en beschikbaarheid.

Conclusie

Het kiezen van het juiste consistentieniveau hangt puur af van de behoeften van de applicatie, en hoewel er een impact kan zijn op de beschikbaarheid bij sterkere consistentie, zal de algehele beschikbaarheid van een applicatie niet worden beïnvloed door het kiezen van sterkere consistentieniveaus.

Failover

Handmatige failover

Ontwikkelaars of medewerkers kunnen inloggen op het portaal en handmatig overschakelen naar de volgende beschikbare regio tijdens een storing in de regio waarmee de applicatie momenteel is verbonden. Hoewel deze optie tot op zekere hoogte beschikbaarheid biedt, vereist het handmatige tussenkomst om over te schakelen, wat de algehele beschikbaarheidsstatistieken van de site kan beïnvloeden.

Service-beheerde failover

Het inschakelen van door de service beheerde failover stelt Cosmos in staat om automatisch over te schakelen naar de volgende beschikbare regio op basis van de prioriteit die in het portaal is geconfigureerd. Deze optie elimineert de noodzaak voor wijzigingen in de applicatie tijdens het failoverproces.

Conclusie

Hoewel beide een verhoogde beschikbaarheid bieden, geeft de door de service beheerde failover doorvoer de flexibiliteit om over te schakelen naar de volgende beschikbare regio zonder je zorgen te maken over de implementatie van de applicatie.

Partitie Sleutel en Indexen

  • Het definiëren van een partitie sleutel in Azure Cosmos DB is cruciaal voordat je een applicatie erop draait. Cosmos DB is zeer efficiënt voor leesintensieve applicaties, dus het is essentieel om de opzoekcriteria te overwegen en de queries voor het lezen van records uit de database te definiëren voordat je Cosmos DB in je applicatie integreert.
  • Standaard wordt elk item in een Cosmos DB-container automatisch geïndexeerd. Het uitsluiten van bepaalde items of velden van indexering kan echter helpen om het verbruik van Request Units (RUs) te verminderen. Het is net zo belangrijk om velden voor indexering toe te voegen als om indexen op velden die niet geïndexeerd hoeven te worden te verwijderen.
  • Vermijd het opslaan van buitensporig grote items in Azure Cosmos DB.
  • Minimaliseer cross-partitie queries waar mogelijk.
  • Zorg ervoor dat queries filters bevatten om de efficiëntie te verbeteren.
  • Vermijd het herhaaldelijk queryen van dezelfde partitie sleutel; implementeer in plaats daarvan een caching-laag voor dergelijke gebruiksgevallen.

Doorvoer Autoschaal

Azure Cosmos DB ondersteunt zowel standaard (handmatige) als autoschaal doorvoer op het niveau van de container.

Handmatige Doorvoer

De applicatie beslist over de toegestane RU/s, en het maximaliseren van de RU/s-aanvragen zal worden afgeknepen voor de geconfigureerde tijd. Vereist handmatige interventie om de doorvoer te verhogen.

Automatische schaalbaarheid van doorvoer

De applicatie kan de maximale doorvoer configureren die het ondersteunt, en Cosmos schaalt automatisch op basis van de ontvangen verkeersstroom. Bij overschrijding van de automatische doorvoer zullen aanvragen gedurende de geconfigureerde tijd worden afgeknepen. 

Conclusie

Hoewel beide zorgen voor verhoogde beschikbaarheid, biedt automatische doorvoer flexibiliteit bij het omgaan met variërend verkeer zonder afknijpen of invloed op de beschikbaarheid.

Back-up en herstel

Azure Cosmos DB maakt standaard periodieke back-ups voor alle accounts mogelijk

Periodieke back-up

Back-ups worden periodiek genomen voor elke geconfigureerde minuut met een minimumwaarde van 1 uur en een maximum van 24 uur. Het biedt ook opties om de back-upopslag redundant te houden op Geo-, Zone- of Lokaal niveau. Het applicatieteam moet contact opnemen met de ondersteuning om de back-up op te halen.

Continue back-up

De continue back-upoptie houdt de back-upopslag bij in de geconfigureerde Cosmos-database van de regio, en het staat toe dat gegevens worden bewaard van de afgelopen 7 dagen of van de afgelopen 30 dagen. Het biedt ook herstel tot op een bepaald tijdstip.

Conclusie

De keuze voor continue back-up zorgt voor sneller herstel van de database. Dit elimineert de noodzaak van heen en weer interacties met de ondersteuning om de database te herstellen en stelt applicaties in staat om deze te herstellen naar elke regio (waar back-ups bestaan) op een specifiek tijdstip.

Tot slot, hoewel beschikbaarheidsstatistieken cruciaal zijn voor elke toepassing, zijn ze niet kosteloos. Opties die een hogere beschikbaarheid bieden dan de standaardconfiguratie brengen extra kosten met zich mee. Bovendien zijn de eerder genoemde opties mogelijk niet nodig of geschikt voor alle toepassingen die Cosmos gebruiken. Het is echter essentieel om de beste werkwijzen in Azure Cosmos over te nemen en te implementeren om de beschikbaarheid effectief te optimaliseren.

Source:
https://dzone.com/articles/how-to-maximize-the-azure-cosmos-db-availability