Förstå skrivningar i flera regioner i Azure Cosmos DB
GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Bord
Det bästa sättet att uppnå nästan noll driftstopp i antingen ett partiellt eller totalt avbrottsscenario där konsekvens av läsningar inte behöver garanteras är att konfigurera ditt konto för skrivningar i flera regioner. Den här artikeln beskriver de viktigaste begreppen att vara medveten om när du konfigurerar ett skrivkonto för flera regioner.
Hubbregion
I ett databaskonto för flera regioner med skrivning i flera regioner med två eller flera regioner kallas den första regionen där ditt konto skapades för "hubbregionen". Alla andra regioner som sedan läggs till i kontot kallas "satellitregioner". Om hubbregionen tas bort från kontot väljs nästa region, i den ordning de lades till, automatiskt som hubbregion.
Skrivningar som anländer till satellitregioner är kvorum som checkas in i den lokala regionen och skickas sedan till hubbregionen för konfliktlösning asynkront. När en skrivning går till hubbregionen och blir konfliktlös blir den en "bekräftad" skrivning. Fram till dess kallas det en "preliminär" skrivning eller en "obekräftad" skrivning. All skrivning som hanteras från hubbregionen blir omedelbart en bekräftad skrivning.
Förstå tidsstämplar
En av de främsta skillnaderna i ett skrivkonto för flera regioner är förekomsten av två servertidsstämpelvärden som är associerade med varje entitet. Den första är serverns epoktid då entiteten skrevs i regionen. Den här tidsstämpeln är tillgänglig i skrivkonton för både en region och i flera regioner. Det andra tidsstämpelvärdet för servern är associerat med den epoktid då frånvaron av en konflikt bekräftades, eller så löstes konflikten i hubbregionen. En bekräftad eller konfliktmatchad skrivning har en tidsstämpel för konfliktlösning (crts
) tilldelad, medan en obekräftad eller preliminär skrivning inte har crts
. Det finns två tidsstämplar i Cosmos DB som angetts av servern. Den primära skillnaden är om regionkonfigurationen för kontot är Enkelskrivning eller Multi-Write.
Tidsstämpel | Innebörd | När den exponeras |
---|---|---|
_ts |
Den tid då entiteten skrevs. | Exponeras alltid av alla läs- och fråge-API:er. |
crts |
Den epok då multiskrivningskonflikten löstes eller avsaknaden av en konflikt bekräftades. För konfiguration av flera skrivningsregioner definierar den här tidsstämpeln ordningen för ändringar för ändringsflöde:
|
Exponeras som svar på begäranden om ändringsflöde och endast när "Ny trådmodell" aktiveras av begäran. Detta är standardvärdet för Alla versioner och tar bort ändringsflödesläget . |
Nästa steg
Därefter kan du läsa följande artiklar: