Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 upplever ett anslutningsproblem till en viss region eller när en regionomkoppling inträffar.
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:
- Egenskapen ConnectionPolicy.PreferredLocations i .NET V2 SDK.
- Egenskaperna CosmosClientOptions.ApplicationRegion eller CosmosClientOptions.ApplicationPreferredRegions i .NET V3 SDK.
- Metoden CosmosClientBuilder.preferredRegions i Java V4 SDK.
- Parametern CosmosClient.preferred_locations i Python SDK.
- Parametern CosmosClientOptions.ConnectionPolicy.preferredLocations i JS SDK.
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 | Skriver | 
|---|---|---|
| En 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äser | Skriver | 
|---|---|---|
| Enstaka skrivregion | Primär region | Huvudregion | 
| 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 föredragna 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:
- Ange egenskapen ConnectionPolicy.EnableEndpointDiscovery i .NET V2 SDK till false.
- Ange egenskapen CosmosClientOptions.LimitToEndpoint i .NET V3 SDK till true.
- Ställ in metoden CosmosClientBuilder.endpointDiscoveryEnabled i Java V4 SDK till false.
- Ställ in parametern CosmosClient.enable_endpoint_discovery i Python SDK till false.
- Ändra parametern CosmosClientOptions.ConnectionPolicy.enableEndpointDiscovery i JS SDK till false.
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() för 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.
Växla över skrivregionen i ett konto med en enda skrivregion
Om du initierar en överlämning av den aktuella skrivregionen kommer nästa skrivbegäran att misslyckas med ett känt backend-svar. När det här svaret identifieras gör klienten en förfrågan till kontot för att lära sig den nya skrivregionen och fortsätter med att göra ett nytt försök med den aktuella åtgärden och permanent att styra alla framtida skrivåtgärder till den nya regionen.
Regionalt avbrott
Om kontot är en enkel skrivregion och ett regionalt driftstopp inträffar under en skrivåtgärd, liknar beteendet en manuell överkoppling. 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. För konton med en enda skrivregion där läsregionsinställningen skiljer sig från skrivregionen, kan det finnas fall där användaren gör en skrivning och sedan läser från en lokal region, men den lokala regionen har ännu inte tagit emot datareplikeringen (ljusets hastighetsbegrä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 "Tjänst Otillgänglig" (HTTP 503)-fel. 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
- Granska tillgänglighets-SLA:erna.
- Använd den senaste .NET SDK:en
- Använda den senaste Java SDK:t
- Använda den senaste Python SDK:en
- Använda den senaste Node SDK:en