Az Azure Cosmos DB SDK-k többrégiós környezetben való rendelkezésre állásának diagnosztizálása és hibaelhárítása

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ez a cikk az Azure Cosmos DB SDK-k legújabb verziójának viselkedését ismerteti, amikor csatlakozási problémát tapasztal egy adott régióval, vagy amikor egy régió feladatátvétele történik.

Minden Azure Cosmos DB SDK lehetővé teszi a regionális beállítások testreszabását. A rendszer a következő tulajdonságokat használja a különböző SDK-kban:

Amikor az SDK inicializálódik egy olyan konfigurációval, amely megadja a regionális beállításokat, először lekérte a fiókinformációkat, beleértve a globális végpont elérhető régióit is. Ezután alkalmazza a konfigurált regionális beállítás és a fiók elérhető régióinak metszetét, és a regionális beállítás sorrendjét használja az eredmény rangsorolásához.

Ha a regionális beállítási konfiguráció olyan régiókat tartalmaz, amelyek nem érhetők el a fiókban, a rendszer figyelmen kívül hagyja az értékeket. Ha ezeket az érvénytelen régiókat a rendszer később hozzáadja a fiókhoz, az SDK ezeket fogja használni, ha magasabbak a beállításkonfigurációban.

Fiók típusa Olvasások Írások
Egy írási régió Előnyben részesített régió a legmagasabb sorrendtel Elsődleges régió
Több írási régió Előnyben részesített régió a legmagasabb sorrendtel Előnyben részesített régió a legmagasabb sorrendtel

Ha nem állít be előnyben részesített régiót, az SDK-ügyfél alapértelmezés szerint az elsődleges régióra lesz beállítva:

Fiók típusa Olvasások Írások
Egy írási régió Elsődleges régió Elsődleges régió
Több írási régió Elsődleges régió Elsődleges régió

Megjegyzés

Az elsődleges régió az Azure Cosmos DB-fiók régiólistájának első régiójára hivatkozik. Ha a regionális beállításként megadott értékek nem egyeznek meg egyetlen meglévő Azure-régióval sem, a rendszer figyelmen kívül hagyja őket. Ha egyeznek egy meglévő régióval, de a fiók nem replikálódik rá, akkor az ügyfél a következő előnyben részesített régióhoz csatlakozik, amely egyezik vagy az elsődleges régióval.

Figyelmeztetés

A dokumentumban leírt feladatátvételi és rendelkezésre állási logika le van tiltva az ügyfélkonfigurációban, ami nem ajánlott, hacsak a felhasználói alkalmazás nem kezeli magát a rendelkezésre állási hibákat. Ez a következő módon érhető el:

Normál körülmények között az SDK-ügyfél csatlakozik az előnyben részesített régióhoz (ha van megadva regionális beállítás), vagy az elsődleges régióhoz (ha nincs megadva beállítás), és a műveletek erre a régióra lesznek korlátozva, kivéve, ha az alábbi forgatókönyvek bármelyike előfordul.

Ezekben az esetekben az Azure Cosmos DB SDK-t használó ügyfél naplókat tesz közzé, és a művelet diagnosztikai információinak részeként tartalmazza az újrapróbálkozási információkat:

  • A RequestDiagnosticsString tulajdonság a válaszokon a .NET V2 SDK-ban.
  • A .NET V3 SDK válaszainak és kivételeinek Diagnostics tulajdonsága.
  • A getDiagnostics() metódussal a Java v4 SDK-beli válaszoknál és kivételeknél.

Amikor a következő régiót preferenciális sorrendben határozza meg, az SDK-ügyfél a fiókrégió listáját fogja használni, rangsorolva az előnyben részesített régiókat (ha vannak).

Az ilyen események során az SLA-garanciákra vonatkozó átfogó részletekért tekintse meg a rendelkezésre állási SLA-kat ismertető cikket.

Régió eltávolítása a fiókból

Amikor eltávolít egy régiót egy Azure Cosmos DB-fiókból, a fiókot aktívan használó SDK-ügyfél egy háttérválaszkódon keresztül észleli a régió eltávolítását. Az ügyfél ezután elérhetetlenként jelöli meg a regionális végpontot. Az ügyfél újrapróbálkozott az aktuális művelettel, és az összes jövőbeli művelet végleg a következő régióba lesz irányítva, előnyben részesítve. Ha a beállításlista csak egy bejegyzést tartalmazott (vagy üres volt), de a fiók más régiókat is tartalmaz, akkor a fióklista következő régiójába kerül.

Régió hozzáadása fiókhoz

Az Azure Cosmos DB SDK-ügyfél 5 percenként felolvassa a fiók konfigurációját, és frissíti azokat a régiókat, amelyekről tudomást szerez.

Ha eltávolít egy régiót, majd később hozzáadja azt a fiókhoz, ha a hozzáadott régió magasabb regionális preferenciális sorrendben van az SDK-konfigurációban, mint az aktuális csatlakoztatott régió, az SDK visszaáll a régió végleges használatára. A hozzáadott régió észlelése után a rendszer minden jövőbeli kérést átirányít rá.

Ha úgy konfigurálja az ügyfelet, hogy lehetőleg olyan régióhoz csatlakozzon, amelyhez az Azure Cosmos DB-fiók nem tartozik, a rendszer figyelmen kívül hagyja az előnyben részesített régiót. Ha később hozzáadja ezt a régiót, az ügyfél észleli, és véglegesen erre a régióra vált.

Az írási régió feladatátvétele egyetlen írási régiófiókban

Ha az aktuális írási régió feladatátvételét kezdeményezi, a következő írási kérelem egy ismert háttérbeli válaszsal meghiúsul. A válasz észlelésekor az ügyfél lekérdezi a fiókot az új írási régió megismeréséhez, és folytatja az aktuális művelet újrapróbálkozását, és véglegesen átirányítja az összes jövőbeli írási műveletet az új régióba.

Regionális üzemkimaradás

Ha a fiók egy írási régió, és a regionális leállás egy írási művelet során történik, a viselkedés hasonló a manuális feladatátvételhez. Olvasási kérelmek vagy több írási régiós fiók esetén a viselkedés hasonló a régió eltávolításához.

Munkamenet-konzisztencia garanciái

A munkamenet-konzisztencia használatakor az ügyfélnek garantálnia kell, hogy képes olvasni a saját írásait. Az írási régió olyan fiókjaiban, ahol az olvasási régió beállításai eltérnek az írási régiótól, előfordulhatnak olyan esetek, amikor a felhasználó írást bocsát ki, majd egy helyi régióból végez olvasást, a helyi régió még nem kapta meg az adatreplikálást (a könnyű kényszer sebessége). Ilyen esetekben az SDK adott hibát kap a szolgáltatástól az olvasási művelet során, és újrapróbálja az olvasást az elsődleges régióban a munkamenet-konzisztencia biztosítása érdekében. A több írási régióval rendelkező fiókok esetében ugyanaz a munkamenet-szemantika érvényes, de mivel több írási régió is elérhető, az újrapróbálkozások az előnyben részesített régiólista vagy fiók régiórendje alapján lesznek kiállítva.

Átmeneti csatlakozási problémák a TCP protokollon

Olyan esetekben, amikor az Azure Cosmos DB SDK-ügyfél a TCP protokoll használatára van konfigurálva, előfordulhatnak olyan helyzetek, amikor a hálózati feltételek ideiglenesen befolyásolják az adott végponttal folytatott kommunikációt. Ezek az ideiglenes hálózati feltételek TCP-időtúllépésként és a Szolgáltatás nem érhető el (HTTP 503) hibákként jelenhetnek meg. Az ügyfél, ha lehetséges, néhány másodpercig újrapróbálkezik a kéréssel ugyanazon a végponton.

Ha a felhasználó egynél több régióval rendelkező előnyben részesített régiólistát konfigurált, és az ügyfél kimerítette az összes helyi újrapróbálkozási műveletet, megpróbálhatja újrapróbálkozni az adott művelettel a következő régióban a beállítási listából. Az írási műveletek csak akkor próbálkozhatók újra más régióban, ha az Azure Cosmos DB-fiókban több írási régió is engedélyezve van, míg az olvasási műveletek bármely elérhető régióban újrapróbálkozhatók.

Következő lépések