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 redundans inträffar.

Med alla Azure Cosmos DB SDK:er kan du anpassa de regionala inställningarna. Följande egenskaper används i olika SDK:er:

När SDK initieras med en konfiguration som anger regionala inställningar hämtar den först kontoinformationen, inklusive tillgängliga regioner från den globala slutpunkten. Den tillämpar sedan en skärningspunkt mellan den konfigurerade regionala preferensen och kontots tillgängliga regioner och använder ordningen i den regionala preferensen 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:t 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 använder 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

Anteckning

Den primära regionen refererar till den första regionen i listan över Azure Cosmos DB-kontoregioner. Om de värden som anges som regionala inställningar inte matchar några befintliga Azure-regioner ignoreras de. Om de matchar en befintlig region men kontot inte replikeras till den ansluter klienten till nästa prioriterade 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 den önskade regionen (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ärdsdiagnostikinformationen:

  • 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 listan över kontoregioner 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 kommer alla SDK-klienter som aktivt använder kontot att identifiera borttagningen av regionen 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äsna 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 avbrottet inträffar under en skrivåtgärd liknar beteendet en manuell redundansväxling. För läsbegäranden eller konton med 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 gör en läsning från en lokal region. Den lokala regionen har ännu inte tagit emot datareplikeringen (hastighet för lätt begränsning). I sådana fall tar SDK emot ett specifikt fel från tjänsten vid läsåtgärden och försöker läsa i 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 listan över prioriterade regioner 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 visas som TCP-timeouter och http 503-fel (tjänsten är inte tillgänglig). Klienten försöker, om möjligt, begäran lokalt på samma slutpunkt i några sekunder.

Om användaren har konfigurerat en lista över prioriterade regioner 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 flera skrivregioner är aktiverade för Azure Cosmos DB-kontot, medan läsåtgärder kan göras om i valfri tillgänglig region.

Nästa steg