Replikation

Auf dieser Seite wird beschrieben, wie Daten in Spanner repliziert werden, welche verschiedenen Arten von Spanner-Repliken es gibt und welche Rolle sie bei Lese- und Schreibvorgängen spielen. Außerdem werden die Vorteile der Replikation erläutert.

Übersicht

Spanner repliziert automatisch auf Byte-Ebene. Wie unter Lebenszyklus von Spanner-Lese- und Schreibvorgängen beschrieben, nutzt Spanner diese Funktion im zugrunde liegenden Dateisystem, auf dem es basiert. Spanner schreibt Datenbankänderungen in Dateien in diesem Dateisystem. Das Dateisystem kümmert sich um die Replikation und Wiederherstellung der Dateien, wenn ein Computer oder eine Festplatte ausfällt.

Obwohl das zugrunde liegende verteilte Dateisystem, auf dem Spanner basiert, bereits eine Replikation auf Byteebene bietet, repliziert Spanner auch Daten, um die zusätzlichen Vorteile der Datenverfügbarkeit und der geografischen Lokalisierung zu bieten. Auf übergeordneter Ebene sind alle Daten in Spanner in Zeilen organisiert. Spanner erstellt mehrere Kopien oder Replikate dieser Zeilen und speichert diese Replikate dann in verschiedenen geografischen Gebieten. Spanner verwendet ein synchrones, auf Paxos basierendes Replikationsschema, bei dem Abstimmungsreplikate über jede Schreibanfrage abstimmen, bevor der Schreibvorgang committet wird. Dank dieser Eigenschaft der global synchronen Replikation können Sie die aktuellsten Daten aus jedem Lese-/Schreib- oder schreibgeschützten Replikat von Spanner lesen.

Cloud Spanner erstellt Replikate für jeden Split einer Datenbank. Ein Split enthält einen Bereich zusammenhängender Zeilen, die nach Primärschlüssel sortiert sind. Alle Daten in einem Split werden physisch zusammen im Replikat gespeichert und Spanner stellt jedes Replikat aus einer unabhängigen Fehlerzone 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 der Leader konsultiert, um sicherzustellen, dass das Replikat mit Lesezugriff alle aktuellen Mutationen erhalten hat. Informationen zum Überwachen der Änderungsrate und der Menge der Daten, die von Ihrem Leader-Replikat in die regionenübergreifenden Replikate in Ihrer Instanzkonfiguration repliziert werden, finden Sie unter Datenreplikation überwachen.

Vorteile der Cloud Spanner-Replikation

Die Vorteile der Spanner-Replikation sind unter anderem:

  • 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 weiterhin Schreibvorgänge ausführen, auch wenn einige der Replikate nicht verfügbar sind, da nur eine Mehrheit der abstimmenden Replikate erforderlich ist, um einen Schreibvorgang zu committen.

  • Geografische Lokalität: Mit Spanner können Sie Daten in verschiedenen Regionen und Kontinenten platzieren. Das bedeutet, dass Daten geografisch näher und somit schneller für die Nutzer und Dienste zugänglich sind, die sie benötigen.

  • Einzelne Datenbank: Spanner kann eine einzelne Datenbank bereitstellen, da es synchrone Replikation und globale starke Konsistenz bietet.

  • Einfachere Anwendungsentwicklung: Da Spanner ACID-konform ist und globale strikte Konsistenz bietet, müssen Entwickler, die mit Spanner arbeiten, keine zusätzliche Logik in ihre Anwendungen einfügen, um die Eventual Consistency zu berücksichtigen. Dadurch wird die Anwendungsentwicklung und die anschließende Wartung schneller und einfacher.

Replikattypen

Cloud Spanner hat drei Arten von Replikaten: Lese-/Schreibreplikate, Lesereplikate und Zeugenreplikate. Die Regionen und Replikationstopologien, aus denen Basisinstanzkonfigurationen bestehen, sind festgelegt:

Sie können benutzerdefinierte Instanzkonfigurationen erstellen und zusätzliche schreibgeschützte Replikate für regionale und multiregionale Instanzkonfigurationen 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.
  • Kann darüber abstimmen, ob ein Schreibvorgang ausgeführt werden soll.
  • Sie wirken beim Bestimmen des Leaders mit.
  • Sie können als Leader fungieren.
  • Sind der einzige Replikattyp, der in regionalen Instanzen verwendet wird.

Replikate mit Lesezugriff

Replikate mit Lesezugriff unterstützen nur Lese-, aber keine Schreibvorgänge. Diese Replikate stimmen nicht für Leader oder für das Committen von Schreibvorgängen ab. So können Sie die Lesekapazität skalieren, ohne die für Schreibvorgänge erforderliche Quorumgröße zu erhöhen. Schreibgeschützte Replikate zeichnen sich durch Folgendes aus:

  • Eine vollständige Kopie Ihrer Daten, die vom primären Lese-/Schreibreplikat repliziert wird.
  • Nehmen Sie nicht an der Abstimmung zum Übernehmen von Schreibvorgängen teil. Daher besitzt der Speicherort der schreibgeschützten Replikate keinen Einfluss auf die Schreiblatenz.
  • Sie sind nicht berechtigt, Leader zu werden.
  • Sie verarbeiten Lesevorgänge.
  • Asymmetrische Skalierung möglich Weitere Informationen finden Sie unter Asymmetrisches schreibgeschütztes Autoscaling.
  • Sie sind keine eigenständige Lösung für die Notfallwiederherstellung. Die Verfügbarkeit von Instanzen wird durch das Quorum der abstimmenden Replikate bestimmt. Wenn die Spanner-Instanz offline geht, gehen auch die Nur-Lese-Replikate kurz darauf offline und können keine Leseanfragen mehr verarbeiten, auch keine Lesevorgänge veralteter Daten.
  • 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 ausführen, ohne dass ein Roundtrip zur Leader-Region erforderlich ist, sofern die Veraltung mindestens 15 Sekunden beträgt. Sie können auch gerichtete Lesevorgänge verwenden, um Transaktionen mit Lesezugriff und einzelne Lesevorgänge an einen bestimmten Replikattyp oder eine Region in einer multiregionalen Instanzkonfiguration weiterzuleiten. Weitere Informationen finden Sie unter Geleitete Lesevorgänge.

    Für starke Lesevorgänge ist möglicherweise ein Roundtrip zum Leader-Replikat erforderlich. Der Hin- und Rückflug dient nur zum Aushandeln des Zeitstempels, nicht zum Übertragen der tatsächlichen Daten vom Leader. Die Zeitstempelabstimmung ist eine CPU-effiziente Operation 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 „Lesevorgänge“.

Optionale Replikate mit Lesezugriff

Sie können eine benutzerdefinierte regionale oder multiregionale Instanzkonfiguration erstellen und optionale Replikate mit Lesezugriff hinzufügen, um Lesevorgänge zu skalieren und Lesevorgänge veralteter Daten mit niedriger Latenz zu unterstützen. Das hinzugefügte Replikat mit Lesezugriff muss sich in einer Region befinden, die nicht Teil der vordefinierten Basisinstanzkonfiguration ist. Eine Liste der optionalen Lesezugriff-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 Replikat mit Lesezugriff nicht angezeigt wird, können Sie eine neue optionale Region für das Replikat mit Lesezugriff 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 von Lesezugriff-Replikaten zu einer benutzerdefinierten Instanzkonfiguration die Spanner-SLAs der Instanzkonfiguration nicht geändert.

Wenn Sie ein Replikat mit Lesezugriff in einem Kontinent hinzufügen, der sich von der führenden Region unterscheidet, empfehlen wir, mindestens zwei Replikate mit Lesezugriff hinzuzufügen. So kann eine niedrige Leselatenz aufrechterhalten werden, falls eines der Replikate mit Lesezugriff nicht mehr verfügbar ist.

Es hat sich bewährt, Leistungsarbeitslasten zuerst in Nicht-Produktionsinstanzen in der benutzerdefinierten Instanzkonfiguration zu testen. Daten zur medianen Latenz zwischen Regionen finden Sie im Dashboard für Benchmarks für die Latenz und den Durchsatz zwischen Regionen. Wenn Sie beispielsweise eine benutzerdefinierte Instanzkonfiguration mit der multiregionalen Basiskonfiguration eur6 und einem optionalen Lesezugriff-Replikat in us-east1 erstellen, beträgt die erwartete strikte Leselatenz für einen Client in us-east1 etwa 100 Millisekunden, da die Umlaufzeit zur führenden Region in europe-west4 berücksichtigt werden muss. Bei veralteten Lesevorgängen mit ausreichendem Alter ist kein Roundtrip erforderlich, sodass sie viel schneller sind. Sie können auch die Statistiken zu Sperren und Transaktionen verwenden, um Transaktionen mit hoher Latenz zu identifizieren.

Eine Anleitung zum Hinzufügen optionaler Replikate mit Lesezugriff finden Sie unter Benutzerdefinierte Instanzkonfiguration erstellen.

Zeugenreplikate

Zeugenreplikate unterstützen keine Lesezugriffe, nehmen aber an der Abstimmung teil, um Schreibvorgänge zu bestätigen. 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:

  • Werden in Dual- und Multiregionen-Instanzen verwendet.
  • Keine vollständige Kopie der Daten aufbewahren
  • Keine Lesevorgänge ausliefern.
  • Abstimmung darüber, ob Schreibvorgänge übernommen werden sollen.
  • Sie nehmen an der Auswahl des Leaders teil, können aber nicht als Leader-Replikat fungieren.

Die Rolle von Replikaten bei Schreib- und Lesevorgängen

In diesem Abschnitt wird die Rolle von Replikaten bei Spanner-Schreib- und ‑Leseoperationen beschrieben. Das ist hilfreich, um zu verstehen, warum Spanner in biregionalen und multiregionalen Konfigurationen Zeugenreplikate verwendet.

Bei Schreibvorgängen

Client-Schreibanfragen werden immer zuerst auf dem Leader-Replikat verarbeitet, auch wenn es ein Nicht-Leader-Replikat gibt, das näher am Client ist, oder wenn das Leader-Replikat geografisch weit vom Client entfernt ist. Wenn Sie eine biregionale oder multiregionale Instanzkonfiguration verwenden und sich Ihre Clientanwendung in einer Nicht-Leader-Region befindet, verwendet Spanner das Leader-fähige Routing, um Lese-/Schreibtransaktionen dynamisch weiterzuleiten und 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 (oder das Schreibquorum) sich darauf einigt, 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

Clientleseanfragen werden möglicherweise auf dem Leader-Replikat ausgeführt oder erfordern die Kommunikation mit dem Leader-Replikat, je nach dem Parallelitätsmodus der Leseanfrage.

  • 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.

  • Für einzelne Lesemethoden (ein Lesevorgang außerhalb des Kontexts einer Transaktion) und Lesevorgänge in Transaktionen mit Lesezugriff ist möglicherweise eine Kommunikation mit dem Leader erforderlich, je nach dem Parallelitätsmodus des Lesevorgangs. Weitere Informationen zu Nebenläufigkeitsmodi 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.

    • Anfragen für Lesevorgänge veralteter Daten werden an das nächstgelegene verfügbare schreibgeschützte oder Lese-/Schreib-Replikat weitergeleitet, das dem Zeitstempel der Anfrage entspricht. Dies kann das Leader-Replikat sein, wenn es das Replikat ist, das dem Client, der die Leseanfrage gesendet hat, am nächsten ist.

Datenreplikation überwachen

Sie können die Änderungsrate und die Datenmenge überwachen, die von Ihrem Leader-Replikat auf die regionenübergreifenden Replikate 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:

  1. Rufen Sie in der Google Cloud Console Monitoring auf:

    Zu Monitoring

  2. Wählen Sie im Navigationsmenü Metrics Explorer aus.

  3. Klicken Sie im Feld Messwert auf das Drop-down-Menü Messwert auswählen.

  4. Wählen Sie im Feld Nach Ressourcen- oder Messwertname filtern die Option Cloud Spanner-Instanz > Instanz > Über mehrere Regionen 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.

  5. Optional: So zeigen Sie die Menge der replizierten Daten (in Byte) anstelle der Änderungsrate an:

    1. Klicken Sie im Feld Aggregation auf das Drop-down-Menü Summe und wählen Sie Aligner konfigurieren aus.
    2. Klicken Sie im Feld Ausrichtungsfunktion auf das Drop-down-Menü Rate und wählen Sie Delta aus.
    3. Wählen Sie als Tabellentyp Tabelle oder Beide anstelle von „Diagramm“ aus.

      In der Tabelle wird die Datenmenge (in Byte) angezeigt, die im angegebenen Zeitraum repliziert wurde.

  6. Optional: So rufen Sie die Nutzung für eine bestimmte Instanz oder ein bestimmtes Attribut auf:

    1. Verwenden Sie das Feld Filter, um Filter wie eine Instanz-ID, eine Datenbank-ID, eine Quellregion, eine Zielregion oder ein Tag hinzuzufügen.
    2. 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