Verstehen von Schreibvorgängen in mehreren Regionen in Azure Cosmos DB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Die beste Möglichkeit, nahezu null Ausfallzeiten in einem teilweisen oder totalen Ausfallszenario zu erzielen, in dem die Konsistenz von Lesevorgängen nicht garantiert werden muss, besteht darin, Ihr Konto für Schreibvorgänge mit mehreren Regionen zu konfigurieren. In diesem Artikel werden die wichtigsten Konzepte behandelt, die beim Konfigurieren eines Schreibkontos mit mehreren Regionen beachtet werden müssen.

Region des Hubs

In einem Datenbankkonto mit mehreren Regionen mit mindestens zwei Regionen wird die erste Region, in der Ihr Konto erstellt wurde, als "Hub"-Region bezeichnet. Alle anderen Regionen, die dann dem Konto hinzugefügt werden, werden als "Satellitenregionen" bezeichnet. Wenn die Hubregion aus dem Konto entfernt wird, wird die nächste Region in der Reihenfolge, in der sie hinzugefügt wurden, automatisch als Hubregion ausgewählt.

Alle in Satellitenregionen eintreffenden Schreibvorgänge werden in der lokalen Region per Quorum festgeschrieben und später asynchron zur Konfliktlösung an die Hub-Region gesendet. Sobald ein Schreibvorgang in die Hub-Region geht und der Konflikt gelöst wird, wird er zu einem „bestätigten“ Schreibvorgang. Bis dahin wird er als "mit Vorbehalt" oder "nicht bestätigt" bezeichnet. Alle vom Hubbereich bereitgestellten Schreibvorgänge werden sofort zu bestätigten Schreibvorgängen.

Verstehen von Zeitstempeln

Einer der Hauptunterschiede bei einem Multi-Region-Schreibkonto ist das Vorhandensein von zwei Server-Zeitstempelwerten, die jeder Entität zugeordnet sind. Die erste ist die Serverzeit, zu der die Entität in dieser Region geschrieben wurde. Dieser Zeitstempel ist sowohl in Schreibkonten mit einer Region als auch in Konten mit mehreren Regionen verfügbar. Der zweite Serverzeitstempelwert ist der Epochenzeit zugeordnet, zu der das Fehlen eines Konflikts bestätigt wurde oder der Konflikt in der Hubregion gelöst wurde. Ein bestätigter oder konfliktbelöster Schreibvorgang hat einen Zeitstempel zur Konfliktauflösung (crts) zugewiesen, während ein nicht bestätigter oder mit Vorbehalt geschriebener Schreibvorgang nicht über crts verfügt. Es gibt zwei Zeitstempel in Cosmos DB, die vom Server festgelegt sind. Der Hauptunterschied besteht darin, ob die Regionskonfiguration des Kontos Single-Write oder Multi-Write ist.

Timestamp Bedeutung Wenn verfügbar gemacht
_ts Die Serverzeit, zu der die Entität geschrieben wurde. Immer verfügbar gemacht von allen Lese- und Abfrage-APIs.
crts Die Epoche, zu der der Multi-Write-Konflikt gelöst wurde, oder das Fehlen eines Konflikts bestätigt wurde. Für die Multi-Write-Regionskonfiguration definiert dieser Zeitstempel die Reihenfolge der Änderungen für den Änderungsfeed:

  • Wird verwendet, um die Startzeit für Änderungsfeedanforderungen zu finden
  • Wird als Sortierreihenfolge für die Antwort im Änderungsfeed verwendet
Wird als Reaktion auf Änderungsfeedanforderungen verfügbar gemacht und nur, wenn "Neues Schreibmodell" von der Anforderung aktiviert ist. Dies ist die Standardeinstellung für alle Versionen und löscht den Modus Änderungsfeed.

Nächste Schritte

Als Nächstes können Sie die folgenden Artikel lesen: