Principy zápisů do více oblastí ve službě Azure Cosmos DB
PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl
Nejlepším způsobem, jak dosáhnout téměř nulového výpadku ve scénáři částečného nebo celkového výpadku, kdy není potřeba zaručit konzistenci čtení, je nakonfigurovat účet pro zápisy do více oblastí. Tento článek popisuje klíčové koncepty, které je potřeba vědět při konfiguraci účtu pro zápis do více oblastí.
Oblast centra
V účtu databáze pro zápis do více oblastí se dvěma nebo více oblastmi se první oblast, ve které byl váš účet vytvořen, nazývá "centrální" oblast. Všechny ostatní oblasti, které se pak přidají do účtu, se nazývají "satelitní" oblasti. Pokud je oblast centra odebrána z účtu, další oblast v pořadí, ve které byly přidány, se automaticky vybere jako oblast centra.
Všechny zápisy přicházející do satelitních oblastí jsou kvorum potvrzené v místní oblasti a potom se později odešlou do oblasti centra pro řešení konfliktů asynchronně. Jakmile zápis přejde do oblasti centra a vyřeší se konflikt, stane se "potvrzeným" zápisem. Do té doby se nazývá "nezávazný" zápis nebo "nepotvrzený" zápis. Všechny zápisy obsluhované z oblasti centra se okamžitě stanou potvrzeným zápisem.
Principy časových razítek
Jedním z hlavních rozdílů v účtu pro zápis do více oblastí je přítomnost dvou hodnot časového razítka serveru spojených s každou entitou. První je epocha serveru, ve které byla entita napsána v této oblasti. Toto časové razítko je k dispozici v účtech pro zápis do jedné oblasti i účty pro zápis do více oblastí. Druhá hodnota časového razítka serveru je přidružená k epochě, kdy byla potvrzena absence konfliktu, nebo byl konflikt vyřešen v oblasti centra. Potvrzený nebo konflikt vyřešený zápis má přiřazené časové razítko řešení konfliktů (crts
), zatímco nepotvrzené nebo nezávazné zápis nemá crts
. Ve službě Cosmos DB jsou nastavené serverem dvě časová razítka. Primární rozdíl spočívá v tom, jestli je konfigurace oblasti účtu single-write nebo multi-write.
Časové razítko | Význam | Při zveřejnění |
---|---|---|
_ts |
Epocha serveru, ve které byla entita napsána. | Vždy vystavená všemi rozhraními API pro čtení a dotazování |
crts |
Epocha, kdy byl vyřešen konflikt s více zápisy, nebo byla potvrzena absence konfliktu. Pro konfiguraci více oblastí zápisu toto časové razítko definuje pořadí změn kanálu změn:
|
Vystavené v reakci na žádosti kanálu změn a pouze v případech, kdy požadavek povolí "Nový model drátu". Toto je výchozí nastavení pro všechny verze a odstraní režim kanálu změn. |
Další kroky
Dále si můžete přečíst následující články: