Auf dieser Seite wird beschrieben, wie Daten in Spanner repliziert werden, welche verschiedenen Typen von Spanner-Replikaten es gibt, welche Rollen sie bei Lese-/Schreibvorgängen spielen und was die Vorteile der Replikation sind.
Übersicht
Spanner repliziert automatisch auf Byte-Ebene. Wie unter Lebensdauer von Lese- und Schreibvorgängen in Cloud Spanner beschrieben, wird diese Funktion im zugrunde liegenden Dateisystem genutzt, auf dem Spanner basiert. Spanner schreibt Datenbankmutationen in Dateien dieses Dateisystems. Das Dateisystem übernimmt dann die Replikation und Wiederherstellung der Dateien, wenn ein Computer oder ein Laufwerk ausfällt.
Obwohl das zugrunde liegende verteilte Dateisystem, auf dem Spanner basiert, bereits Replikation auf Byte-Ebene bietet, repliziert auch Spanner Daten, um Ihnen die zusätzlichen Vorteile von Datenverfügbarkeit und geografischer Präsenz zu bieten. Auf übergeordneter Ebene sind alle Daten in Spanner in Zeilen organisiert. Spanner erstellt mehrere Kopien, sogenannte Replikate, dieser Zeilen und speichert sie dann an verschiedenen geografischen Orten. Spanner verwendet ein synchrones, Paxos-basiertes Replikationsschema, bei dem abstimmende Replikate vor jeder Schreibanforderung eine Abstimmung vornehmen, bevor der Schreibvorgang festgeschrieben wird. Mit dieser weltweit synchronen Replikation können Sie die aktuellsten Daten aus allen nicht schreibgeschützten und schreibgeschützten Spanner-Replikaten auslesen.
Cloud Spanner erstellt Replikate jedes Datenbank-Splits. Ein Split enthält einen Bereich von zusammenhängenden Zeilen, wobei die Zeilen nach Primärschlüssel geordnet sind. Alle Daten eines Splits werden im Replikat zusammen gespeichert und Spanner stellt jedes Replikat aus einer unabhängigen Ausfallzone heraus bereit. Weitere Informationen finden Sie in der Schemaübersicht.
Ein Satz von Splits wird mithilfe von Paxos gespeichert und repliziert. In jedem Paxos-Replikatset wird eines der Replikate dazu bestimmt, als Leader zu fungieren. Leader-Replikate verarbeiten Schreibvorgänge. Eine Leseanfrage kann dagegen von jedem nicht schreibgeschützten und jedem schreibgeschützten Replikat verarbeitet werden, ohne dass es mit dem Leader kommunizieren muss. Wenn ein starker Lesevorgang angefordert wird, wird in der Regel das Leader-Replikat konsultiert, um sicherzustellen, dass das schreibgeschützte Replikat alle aktuellen Änderungen erhalten hat. Informationen zum Überwachen der Änderungsrate und der Menge der Daten, die von Ihrem führenden Replikat zu den regionsübergreifenden Replikaten in Ihrer Instanzkonfiguration repliziert werden, finden Sie unter Datenreplikation überwachen.
Vorteile der Spanner-Replikation
Die Spanner-Replikation bietet folgende Vorteile:
Datenverfügbarkeit: Wenn Sie mehrere Kopien Ihrer Daten haben, sind diese für Clients, die die Daten auslesen möchten, besser verfügbar. Außerdem kann Spanner selbst dann Schreibvorgänge verarbeiten, wenn einige der Replikate nicht verfügbar sind. Es reicht nämlich aus, wenn eine Mehrheit der abstimmenden Replikate verfügbar ist, damit ein Schreibvorgang festgeschrieben werden kann.
Geografische Präsenz: Daten mit Spanner auf verschiedene Regionen und Kontinente verteilen zu können, bedeutet, dass Daten geografisch weniger weit von den benötigten Nutzern und Diensten entfernt sind und die Daten somit schneller zugänglich sind.
Einheitliche Datenbankerfahrung: Aufgrund der synchronen Replikation und der weltweit hohen Konsistenz verhält sich Spanner bei jedem Umfang gleich und ermöglicht so eine einheitliche Datenbankerfahrung.
Erleichterte Anwendungsentwicklung: Da Spanner ACID-konform ist und weltweit hohe Konsistenz bietet, müssen Entwickler, die mit Spanner arbeiten, ihren Anwendungen keine zusätzliche Logik für den Umgang mit „Eventual Consistency“ hinzufügen. Dies beschleunigt und erleichtert die Anwendungsentwicklung und nachfolgende Wartung.
Replikattypen
Spanner verfügt über drei Replikattypen: Nicht schreibgeschützte Replikate, schreibgeschützte Replikate und Zeugenreplikate. Die Regionen und Replikationstopologien, aus denen Basisinstanzkonfigurationen bestehen, sind festgelegt:
- Basis-Einzelregion-Instanzkonfigurationen (regional) verwenden nur nicht schreibgeschützte Replikate.
- Biregionale Basisinstanzkonfigurationen verwenden nicht schreibgeschützte Replikate und Zeugenreplikate.
- Multiregionale Basisinstanzkonfigurationen verwenden eine Kombination aus allen drei Replikattypen.
Sie können benutzerdefinierte Instanzkonfigurationen erstellen und für regionale und multiregionale Instanzkonfigurationen zusätzliche schreibgeschützte Replikate hinzufügen.
In der folgenden Tabelle sind die Typen von Spanner-Replikaten und ihre Eigenschaften zusammengefasst:
Replikattyp | Kann abstimmen | Kann Leader werden | Kann Lesevorgänge verarbeiten | Replikat manuell konfigurieren |
---|---|---|---|---|
Nicht schreibgeschützt | Ja | Ja | Ja | no |
Schreibgeschützt | Nein | Nein | Ja | Ja* |
Zeugen | Ja | Nein | Nein | no |
* Weitere Informationen finden Sie unter Instanz mit einer benutzerdefinierten Instanzkonfiguration erstellen.
Replikate mit Lese-/Schreibzugriff
Nicht schreibgeschützte Replikate unterstützen sowohl Lese-, als auch Schreibvorgänge. Diese Replikate besitzen folgende Eigenschaften:
- Sie bewahren eine vollständige Kopie Ihrer Daten auf.
- Sie verarbeiten Lesevorgänge.
- Sie können abstimmen, ob ein Schreibvorgang festgeschrieben werden soll.
- Sie wirken beim Bestimmen des Leaders mit.
- Sie können als Leader fungieren.
- Sie sind der einzige Replikattyp, der in regionalen Instanzen verwendet wird.
Replikate mit Lesezugriff
Schreibgeschützte Replikate unterstützen Lesevorgänge, aber keine Schreibvorgänge. Sie stimmen weder bei der Wahl des Leaders ab, noch darüber, ob Schreibvorgänge festgeschrieben werden sollen. Mithilfe schreibgeschützter Replikate können Sie somit Ihre Lesekapazität skalieren, ohne dass sich die Größe des Quorums erhöht, das für Schreibvorgänge erforderlich ist. Schreibgeschützte Replikate zeichnen sich durch Folgendes aus:
- Sie bewahren eine vollständige Kopie Ihrer Daten auf, die aus dem nicht schreibgeschützten Leader-Replikat repliziert wurde.
- Sie stimmen nicht darüber ab, ob Schreibvorgänge festgeschrieben werden sollen. Daher besitzt der Speicherort der schreibgeschützten Replikate keinen Einfluss auf die Schreiblatenz.
- Sie können nicht als Leader fungieren.
- Sie verarbeiten Lesevorgänge.
- Kann asymmetrisch skaliert werden. Weitere Informationen finden Sie unter Asymmetrisches schreibgeschütztes Autoscaling.
Wenn es sich um das Replikat handelt, das Ihrer Anwendung am nächsten ist, kann das schreibgeschützte Replikat in der Regel veraltete Lesevorgänge verarbeiten, ohne dass eine Umlaufkommunikation mit der Leader-Region erforderlich ist, vorausgesetzt, dass die Veralterung mindestens 15 Sekunden beträgt. Sie können auch gerichtete Lesevorgänge verwenden, um schreibgeschützte Transaktionen und einzelne Lesevorgänge an einen bestimmten Replikattyp oder eine Region in einer multiregionalen Instanzkonfiguration weiterzuleiten. Weitere Informationen finden Sie unter Gezielte Lesezugriffe.
Starke Lesevorgänge erfordern möglicherweise eine Umlaufkommunikation mit dem Leader-Replikat. Der Roundtrip dient nur zum Aushandeln des Zeitstempels, nicht zum Übertragen der tatsächlichen Daten vom Leader. Die Zeitstempelabstimmung ist ein CPU-effizienter Vorgang auf dem Leader und die Daten sind in der Regel bereits unterwegs. Diese Kommunikation wird automatisch vom System abgewickelt.
Weitere Informationen zu veralteten und starken Lesevorgängen finden Sie im Abschnitt zu Lesevorgängen.
Optionale Replikate mit Lesezugriff
Sie können eine benutzerdefinierte regionale oder multiregionale Instanzkonfiguration erstellen und optionale schreibgeschützte Replikate hinzufügen, um Lesevorgänge zu skalieren und Lesevorgänge mit niedriger Latenz zu unterstützen. Das hinzugefügte schreibgeschützte Replikat muss sich in einer Region befinden, die nicht Teil der vordefinierten Basiskonfiguration der Instanz ist. Eine Liste der optionalen schreibgeschützten Regionen, die Sie hinzufügen können, finden Sie in der Spalte „Optionale Region“ unter Regional verfügbare Konfigurationen und Multiregional verfügbare Konfigurationen. Wenn der von Ihnen ausgewählte Standort für das schreibgeschützte Replikat nicht angezeigt wird, können Sie eine neue optionale Region für das schreibgeschützte Replikat anfordern.
Für alle optionalen schreibgeschützten Replikate fallen Kosten für Rechenkapazität, Speicher und Replikation an.Außerdem werden durch das Hinzufügen schreibgeschützter Replikate zu einer benutzerdefinierten Instanzkonfiguration die Spanner-SLAs der Instanzkonfiguration nicht geändert.
Wenn Sie ein schreibgeschütztes Replikat in einem Kontinent hinzufügen, der sich von der Leader-Region unterscheidet, empfehlen wir, mindestens zwei schreibgeschützte Replikate hinzuzufügen. So wird eine niedrige Leselatenz beibehalten, falls eines der schreibgeschützten Replikate nicht mehr verfügbar ist.
Es hat sich bewährt, Leistungsarbeitslasten zuerst in Nicht-Produktionsinstanzen in der benutzerdefinierten Instanzkonfiguration zu testen. Daten zur medianen regionenübergreifenden Latenz finden Sie im Benchmark-Dashboard für regionenübergreifende Latenz und Durchsatz. Wenn Sie beispielsweise eine benutzerdefinierte Instanzkonfiguration mit der multiregionalen Basiskonfiguration eur6
und einem optionalen schreibgeschützten Replikat in us-east1
erstellen, beträgt die erwartete starke Leselatenz für einen Client in us-east1
aufgrund der Round-Trip-Zeit zur Leader-Region in europe-west4
etwa 100 Millisekunden. Bei veralteten Lesevorgängen mit ausreichendem Alter ist kein Roundtrip erforderlich, sodass sie viel schneller sind. Sie können auch die Schloss- und Transaktionsstatistiken verwenden, um Transaktionen mit hoher Latenz zu identifizieren.
Eine Anleitung zum Hinzufügen optionaler schreibgeschützter Replikate finden Sie unter Benutzerdefinierte Instanzkonfiguration erstellen.
Zeugenreplikate
Zeugenreplikate unterstützen keine Lesevorgänge, stimmen jedoch darüber ab, ob Schreibvorgänge festgeschrieben werden. Sie erleichtern das Erreichen von Schreibquoren, ohne dass die Speicher- und Rechenressourcen benötigt werden, die nicht schreibgeschützte Replikate erfordern, um eine vollständige Kopie der Daten zu speichern und Lesevorgänge auszuführen. Zeugenreplikate zeichnen sich durch Folgendes aus:
- Sie werden in dualen und multiregionalen Instanzen verwendet.
- Sie bewahren keine vollständige Kopie Ihrer Daten auf.
- Sie verarbeiten keine Lesevorgänge.
- Sie stimmen darüber ab, ob Schreibvorgänge festgeschrieben werden sollen.
- Sie wirken beim Bestimmen des Leaders mit, können aber selbst nicht als Leader-Replikat fungieren.
Rolle von Replikaten bei Schreib- und Lesevorgängen
In diesem Abschnitt wird die Rolle von Replikaten bei Spanner-Schreibvorgängen und -Lesevorgängen beschrieben. Dies ist hilfreich, um zu verstehen, warum Spanner in Dual-Region- und multiregionalen Konfigurationen Zeugenreplikate verwendet.
Bei Schreibvorgängen
Client-Schreibanforderungen werden immer zuerst am Leader-Replikat verarbeitet, selbst wenn sich ein Replikat, das nicht als Leader fungiert, näher am Client befindet oder das Leader-Replikat vom Client geografisch weit entfernt ist. Wenn Sie eine Instanzkonfiguration mit zwei oder mehreren Regionen verwenden und sich Ihre Clientanwendung in einer Region befindet, die nicht die führende Region ist, verwendet Spanner das Leader-fähige Routing, um Lese-/Schreibtransaktionen dynamisch weiterzuleiten und so die Latenz in Ihrer Datenbank zu verringern. Weitere Informationen finden Sie unter Leader-aware routing.
Das Leader-Replikat protokolliert den eingehenden Schreibvorgang und leitet ihn parallel an die Replikate weiter, die über diesen Schreibvorgang abstimmen dürfen. Jedes stimmberechtigte Replikat schließt seinen Schreibvorgang ab und teilt dem Leader dann mit, ob der Schreibvorgang festgeschrieben werden soll. Der Schreibvorgang wird festgeschrieben, wenn eine Mehrheit der abstimmenden Replikate (bzw. das Schreibquorum) dafür stimmt, den Schreibvorgang festzuschreiben. Im Hintergrund protokollieren alle verbleibenden Replikate außer den Zeugenreplikaten den Schreibvorgang. Wenn ein nicht schreibgeschütztes oder ein schreibgeschütztes Replikat beim Protokollieren von Schreibvorgängen in Rückstand gerät, kann es die fehlenden Daten von einem anderen Replikat anfordern, damit es eine vollständige, aktuelle Kopie der Daten besitzt.
Bei Lesevorgängen
Für Client-Leseanforderungen wird möglicherweise das Leader-Replikat verwendet bzw. erfordert eine Kommunikation mit diesem. Dies hängt vom Gleichzeitigkeitsmodus der Leseanforderung ab.
Lesevorgänge, die Teil einer Lese-Schreib-Transaktion sind, werden vom Leader-Replikat verarbeitet, da das Leader-Replikat die zum Erzwingen der Serialisierbarkeit erforderlichen Sperren beibehält.
Einzelne Leseaufrufe (ein Lesevorgang außerhalb des Kontexts einer Transaktion) und Lesevorgänge in schreibgeschützten Transaktionen erfordern möglicherweise eine Kommunikation mit dem Leader. Dies hängt vom Gleichzeitigkeitsmodus des Lesevorgangs ab. Weitere Informationen zu Gleichzeitigkeitsmodi finden Sie unter Lesetypen.
Starke Leseanforderungen können an jedes nicht schreibgeschützte oder schreibgeschützte Replikat gesendet werden. Wenn die Anforderung an ein Replikat gesendet wird, das nicht als Leader fungiert, muss dieses mit dem Leader kommunizieren, um den Lesevorgang ausführen zu können.
Veraltete Leseanfragen werden an das am nächsten liegende, verfügbare Replikat mit oder ohne Schreibschutz weitergeleitet, das so aktuell ist, wie der Zeitstempel der Anfrage es erfordert. Dies kann das Leader-Replikat sein, wenn sich kein anderes Replikat näher an dem Client befindet, der die Leseanfrage ausgegeben hat.
Datenreplikation überwachen
Sie können die Änderungsrate und die Menge der Daten überwachen, die vom führenden Replikat zu den regionenübergreifenden Replikaten in Ihrer Instanzkonfiguration repliziert werden. Die Änderungsrate wird in Byte pro Sekunde und die Datenmenge in Byte angegeben. Verwenden Sie dazu den Monitoring-Messwert Cross region replicated bytes (instance/cross_region_replicated_bytes_count
).
So rufen Sie diesen Messwert in der Google Cloud Console auf:
Wechseln Sie in der Google Cloud Console zu Monitoring:
Wählen Sie im Navigationsmenü Metrics Explorer aus.
Klicken Sie im Feld Messwert auf das Drop-down-Menü Messwert auswählen.
Wählen Sie im Feld Nach Ressourcen- oder Messwertname filtern die Option Cloud Spanner-Instanz > Instanz > Überregionale replizierte Byte aus und klicken Sie dann auf Anwenden.
Dieser Messwert ist nur unter Aktive Messwerte verfügbar, wenn in Ihrer Instanz regionsübergreifende Replikationsaktivitäten stattfinden. Andernfalls wird er unter Inaktive Messwerte angezeigt. Standardmäßig werden in der Benutzeroberfläche nur aktive Messwerte gefiltert und angezeigt. Entfernen Sie das Häkchen bei Aktiv, um sowohl aktive als auch inaktive Messwerte zu sehen.
Das Diagramm zeigt die Änderungsrate (in Byte pro Sekunde) der replizierten Daten für alle Spanner-Instanzen im angegebenen Zeitraum.
Optional: So zeigen Sie die Menge der replizierten Daten (in Byte) anstelle der Änderungsrate an:
- Klicken Sie im Feld Zusammenfassung auf das Drop-down-Menü Summe und wählen Sie Abstimmungsfunktion konfigurieren aus.
- Klicken Sie im Feld Abstimmungsfunktion auf das Drop-down-Menü Rate und wählen Sie Delta aus.
Wählen Sie als Tabellentyp Tabelle oder Beide anstelle von „Diagramm“ aus.
Die Tabelle zeigt die Menge der Daten (in Byte), die im angegebenen Zeitraum repliziert wurden.
Optional: So rufen Sie die Nutzung für eine bestimmte Instanz oder ein bestimmtes Attribut auf:
- Verwenden Sie das Feld Filter, um Filter wie eine Instanz-ID, eine Datenbank-ID, eine Quellregion, eine Zielregion oder ein Tag hinzuzufügen.
- Klicken Sie auf Filter hinzufügen, um mehrere Filter hinzuzufügen.
Eine vollständige Liste der Google Cloud -Messwerte finden Sie unter Google Cloud -Messwerte.
Nächste Schritte
- Weitere Informationen zu Instanzkonfigurationen
- Informationen zum Erstellen und Verwalten von Instanzen
- Instanzkonfigurationen erstellen und verwalten
- Google Cloud Weitere Informationen zu Geografie und Regionen