Dela via


Diagnostisera och felsöka tillgängligheten för Azure Cosmos DB SDK:er i miljöer med flera regioner

GÄLLER FÖR: NoSQL

Den här artikeln beskriver beteendet för den senaste versionen av Azure Cosmos DB SDK:er när du ser ett anslutningsproblem till en viss region eller när en region redundansväxlar.

Alla Azure Cosmos DB SDK:er ger dig möjlighet att anpassa den regionala inställningen. Följande egenskaper används i olika SDK:er:

När SDK initieras med en konfiguration som anger regionala inställningar, hämtas först kontoinformationen, inklusive tillgängliga regioner från den globala slutpunkten. Sedan tillämpas en skärningspunkt mellan den konfigurerade regionala inställningen och kontots tillgängliga regioner och använder ordningen i den regionala inställningen för att prioritera resultatet.

Om den regionala inställningskonfigurationen innehåller regioner som inte är en tillgänglig region i kontot ignoreras värdena. Om dessa ogiltiga regioner läggs till senare i kontot använder SDK:et dem om de är högre i inställningskonfigurationen.

Kontotyp Läsningar Skrivningar
Enstaka skrivregion Önskad region med högsta ordning Primär region
Flera skrivregioner Önskad region med högsta ordning Önskad region med högsta ordning

Om du inte anger en önskad region är SDK-klienten som standard den primära regionen:

Kontotyp Läsningar Skrivningar
Enstaka skrivregion Primär region Primär region
Flera skrivregioner Primär region Primär region

Kommentar

Primär region refererar till den första regionen i azure Cosmos DB-kontoregionlistan. Om de värden som anges som regional inställning inte överensstämmer med några befintliga Azure-regioner ignoreras de. Om de matchar en befintlig region men kontot inte replikeras till den ansluter klienten till nästa önskade region som matchar eller till den primära regionen.

Varning

Redundans- och tillgänglighetslogik som beskrivs i det här dokumentet kan inaktiveras i klientkonfigurationen, vilket inte rekommenderas om inte själva användarprogrammet ska hantera tillgänglighetsfel. Detta kan uppnås genom att:

Under normala omständigheter ansluter SDK-klienten till önskad region (om en regional inställning har angetts) eller till den primära regionen (om ingen inställning har angetts) och åtgärderna begränsas till den regionen, såvida inte något av nedanstående scenarier inträffar.

I dessa fall exponerar klienten som använder Azure Cosmos DB SDK loggar och innehåller återförsöksinformationen som en del av åtgärdens diagnostikinformation:

  • Egenskapen RequestDiagnosticsString för svar i .NET V2 SDK.
  • Egenskapen Diagnostik för svar och undantag i .NET V3 SDK.
  • Metoden getDiagnostics() i svar och undantag i Java v4 SDK.

När du fastställer nästa region i prioritetsordning använder SDK-klienten kontoregionlistan och prioriterar önskade regioner (om det finns några).

En omfattande information om SLA-garantier under dessa händelser finns i serviceavtalen för tillgänglighet.

Ta bort en region från kontot

När du tar bort en region från ett Azure Cosmos DB-konto identifierar alla SDK-klienter som aktivt använder kontot regionborttagningen via en svarskod för serverdelen. Klienten markerar sedan den regionala slutpunkten som otillgänglig. Klienten försöker utföra den aktuella åtgärden igen och alla framtida åtgärder dirigeras permanent till nästa region i prioritetsordning. Om inställningslistan bara hade en post (eller var tom) men kontot har andra tillgängliga regioner dirigeras den till nästa region i kontolistan.

Lägga till en region i ett konto

Var femte minut läser Azure Cosmos DB SDK-klienten kontokonfigurationen och uppdaterar de regioner som den känner till.

Om du tar bort en region och senare lägger till den i kontot igen, om den tillagda regionen har en högre regional inställningsordning i SDK-konfigurationen än den aktuella anslutna regionen, växlar SDK:t tillbaka för att använda den här regionen permanent. När den tillagda regionen har identifierats dirigeras alla framtida begäranden till den.

Om du konfigurerar klienten så att den helst ansluter till en region som Azure Cosmos DB-kontot inte har, ignoreras den önskade regionen. Om du lägger till den regionen senare identifierar klienten den och växlar permanent till den regionen.

Redundansvästna skrivregionen i ett konto för en enda skrivregion

Om du initierar en redundansväxling av den aktuella skrivregionen misslyckas nästa skrivbegäran med ett känt serverdelssvar. När det här svaret identifieras frågar klienten kontot för att lära sig den nya skrivregionen och fortsätter med att försöka utföra den aktuella åtgärden igen och permanent dirigera alla framtida skrivåtgärder till den nya regionen.

Regionalt avbrott

Om kontot är en enda skrivregion och det regionala driftstoppet inträffar under en skrivåtgärd liknar beteendet en manuell redundansväxling. För läsbegäranden eller konton för flera skrivregioner liknar beteendet att ta bort en region.

Garantier för sessionskonsekvens

När du använder sessionskonsekvens måste klienten garantera att den kan läsa sina egna skrivningar. I konton med en enda skrivregion där inställningen för läsregion skiljer sig från skrivregionen kan det finnas fall där användaren utfärdar en skrivning och sedan läser från en lokal region, den lokala regionen har ännu inte tagit emot datareplikeringen (hastighet för ljus begränsning). I sådana fall tar SDK emot ett specifikt fel från tjänsten för läsåtgärden och försöker läsa på den primära regionen igen för att säkerställa sessionskonsekvens. För konton med flera skrivregioner gäller samma sessionssemantik, men eftersom det finns flera tillgängliga skrivregioner utfärdas återförsök med hjälp av önskad regionlista eller kontots regionordning.

Tillfälliga anslutningsproblem i TCP-protokollet

I scenarier där Azure Cosmos DB SDK-klienten är konfigurerad att använda TCP-protokollet kan det för en viss begäran finnas situationer där nätverksvillkoren tillfälligt påverkar kommunikationen med en viss slutpunkt. Dessa tillfälliga nätverksförhållanden kan uppstå som TCP-timeouter och fel som inte är tillgängliga för tjänsten (HTTP 503). Klienten försöker om möjligt igen lokalt på samma slutpunkt i några sekunder.

Om användaren har konfigurerat en önskad regionlista med fler än en region och klienten har förbrukat alla lokala återförsök kan den försöka utföra den enskilda åtgärden igen i nästa region från inställningslistan. Skrivåtgärder kan bara göras om i en annan region om Azure Cosmos DB-kontot har flera skrivregioner aktiverade, medan läsåtgärder kan göras om i valfri tillgänglig region.

Nästa steg