Auf dieser Seite wird das Autoscaling-Tool für Spanner (Autoscaling) vorgestellt, ein Open-Source-Tool, das Sie als Begleittool für Spanner verwenden können. Mit diesem Tool können Sie die Rechenkapazität in einer oder mehreren Spanner-Instanzen automatisch erhöhen oder reduzieren, je nachdem, wie viel Kapazität belegt ist.
Weitere Informationen zum Skalieren in Spanner finden Sie unter Autoscaling für Spanner. Informationen zum Bereitstellen des Autoscaling-Tools finden Sie hier:
- Projektspezifisches oder zentralisiertes Autoscaling-Tool für Spanner bereitstellen
- Verteiltes Autoscaling-Tool für Spanner bereitstellen
Auf dieser Seite werden die Funktionen, die Architektur, die Konfiguration und die Bereitstellungstopologien des Autoscalings vorgestellt. Die Themen, die diese Reihe fortsetzen, führen Sie durch die Bereitstellung von Autoscaling in jeder der verschiedenen Topologien.
Autoscaling
Das Autoscaling-Tool ist nützlich, um die Auslastung und Leistung Ihrer Spanner-Bereitstellungen zu verwalten. Damit Sie die Kostenkontrolle im Hinblick auf die Leistungsanforderungen ausgleichen können, überwacht das Autoscaling-Tool Ihre Instanzen und fügt automatisch Knoten oder Verarbeitungseinheiten hinzu oder entfernt diese, um sicherzustellen, dass sie innerhalb der folgenden Parameter bleiben:
- Empfohlene Maximalwerte für die CPU-Auslastung
Das empfohlene Limit für den Speicher pro Knoten
plus oder minus einer konfigurierbaren Marge.
Mit Autoscaling-Spanner-Bereitstellungen können Sie Ihre Infrastruktur automatisch und flexibel an die Anforderungen von Arbeitslasten anpassen. Durch das Autoscaling wird auch die Größe der bereitgestellten Infrastruktur angepasst. So können Sie die Kosten senken.
Architektur
In diesem Abschnitt werden die Komponenten von Autoscaling und ihre jeweiligen Zwecke ausführlicher beschrieben.
Die Architektur des Autoscaling-Tools besteht aus Cloud Scheduler, zwei Pub/Sub-Themen, zwei Cloud Run-Funktionen und Firestore. Die Cloud Monitoring API wird verwendet, um CPU-Auslastung und Speichermesswerte für Spanner-Instanzen abzurufen.
Cloud Scheduler
Mit Cloud Scheduler können Sie festlegen, wie oft das Autoscaling-Tool die Grenzwerte der Skalierungsmesswerte Ihrer Spanner-Instanzen überprüft. Ein Cloud Scheduler-Job kann eine oder mehrere Instanzen gleichzeitig prüfen. Sie können beliebig viele Jobzeitpläne definieren.
Cloud Run-Funktion für Polling
Die Poller-Cloud Run-Funktion ist für das Erfassen und Verarbeiten der Zeitachsenmesswerte für eine oder mehrere Spanner-Instanzen zuständig. Der Poller vorverarbeitet die Messwertdaten für jede Spanner-Instanz, damit nur die relevantesten Datenpunkte ausgewertet und an die Scaler Cloud Run-Funktion gesendet werden. Die Vorverarbeitung durch die Poller-Cloud Run-Funktion vereinfacht außerdem die Bewertung von Grenzwerten für regionale, Dual-Region- und Multi-Region-Spanner-Instanzen.
Scaler Cloud Run-Funktion
Die Scaler-Cloud Run-Funktion wertet die Datenpunkte aus, die von der Poller-Cloud Run-Funktion empfangen werden. Dabei wird ermittelt, ob die Anzahl der Knoten angepasst werden muss und, wenn ja, in welchem Umfang. Die Cloud Run-Funktion vergleicht die Messwerte mit dem Grenzwert, plus oder minus einer zulässigen Marge und passt die Anzahl der Knoten oder Verarbeitungseinheiten basierend auf der konfigurierten Skalierungsmethode an. Weitere Informationen zu Skalierungsmethoden finden Sie unter Autoscaling-Features.
Operativer Ablauf
In diesem Abschnitt wird das operative Modell des Autoscaling-Tools beschrieben, wie im folgenden Architekturdiagramm dargestellt.
- Sie definieren den Zeitplan, die Zeit und die Häufigkeit Ihrer Autoscaling-Jobs in Cloud Scheduler.
- Nach dem von Ihnen definierten Zeitplan überträgt Cloud Scheduler eine Nachricht mit einer JSON-Nutzlast mit den Konfigurationsparametern des Autoscaling-Tools für eine oder mehrere Spanner-Instanzen in das Pub/Sub-Thema „Polling“.
- Wenn die Nachricht im Thema „Umfrage“ veröffentlicht wird, wird eine Instanz der Cloud Run-Funktion „Poller“ erstellt, um die Nachricht zu verarbeiten.
- Die Poller Cloud Run-Funktion liest die Nutzlast der Nachricht und fragt die Cloud Monitoring API ab, um die Nutzungsmesswerte für jede Spanner-Instanz abzurufen.
- Für jede in der Nachricht aufgezählte Spanner-Instanz überträgt die Poller-Funktion eine Nachricht in das Skalierungs-Pub/Sub-Thema mit den Messwerten und Konfigurationsparametern zur Bewertung der jeweiligen Spanner-Instanz.
Für jede Nachricht, die in das Scaler-Thema übertragen wird, führt die Scaler Cloud Run-Funktion folgende Schritte aus:
- Vergleicht die Spanner-Instanzmesswerte mit den konfigurierten Grenzwerten plus oder minus einer konfigurierbaren Marge.
Sie können die Marge selbst konfigurieren oder den Standardwert verwenden. 1. Legt fest, ob die Instanz skaliert werden soll. 1. Berechnet die Anzahl der Knoten oder Verarbeitungseinheiten, auf die die Instanz skaliert werden soll, basierend auf der ausgewählten Skalierungsmethode.
Die Scaler Cloud Run-Funktion ruft die Zeit ab, zu der die Instanz zuletzt in Firestore skaliert wurde, und vergleicht sie mit der aktuellen Zeit, um festzustellen, ob das Hoch- oder Herunterskalieren auf der Grundlage der Cooldown-Zeit zulässig ist.
Wenn die konfigurierte Cooldown-Zeit abgelaufen ist, sendet die Scaler Cloud Run-Funktion eine Anfrage an die Spanner-Instanz, um hoch- oder herunterzuskalieren.
Während des gesamten Ablaufs schreibt das Autoscaling-Tool eine Zusammenfassung der Empfehlungen und Aktionen in Cloud Logging für das Tracking und die Prüfung.
Unabhängig von der gewählten Bereitstellungstopologie bleibt der Autoscaling-Vorgang unverändert.
Autoscaling-Features
In diesem Abschnitt werden die wichtigsten Funktionen des Autoscaler-Tools beschrieben.
Mehrere Instanzen verwalten
Das Autoscaling-Tool kann mehrere Spanner-Instanzen projektübergreifend verwalten. Multiregionale, Dual-Region- und regionale Instanzen haben unterschiedliche Nutzungsgrenzwerte, die für die Skalierung verwendet werden. Beispielsweise werden multiregionale und Dual-Region-Bereitstellungen mit 45% CPU-Auslastung mit hoher Priorität skaliert, während regionale Bereitstellungen auf 65% CPU-Auslastung mit hoher Priorität skaliert werden, jeweils plus oder minus einer zulässigen Marge. Weitere Informationen zu den verschiedenen Skalierungsgrenzwerten finden Sie unter Benachrichtigungen für eine hohe CPU-Auslastung.
Unabhängige Konfigurationsparameter
Jede automatisch skalierte Spanner-Instanz kann einen oder mehrere Abfragezeitpläne haben. Jeder Abfragezeitplan hat eigene Konfigurationsparameter.
Diese Parameter bestimmen die folgenden Faktoren:
- Die minimale und maximale Anzahl von Knoten oder Verarbeitungseinheiten, die steuern, wie klein oder groß Ihre Instanz sein kann. Damit können Sie die Kosten kontrollieren.
- Die Skalierungsmethode, mit der die Spanner-Instanz an Ihre Arbeitslast angepasst wird.
- Die Cooldown-Zeiten, damit Spanner Datenaufteilungen verwalten kann.
Unterschiedliche Skalierungsmethoden für verschiedene Arbeitslasten
Das Autoscaling-Tool bietet drei verschiedene Skalierungsmethoden zum Hoch- und Herunterskalieren von Spanner-Instanzen: schrittweise, lineare und direkte Skalierung. Jede Methode unterstützt unterschiedliche Arten von Arbeitslasten. Sie können eine oder mehrere Methoden auf jede Spanner-Instanz anwenden, die automatisch skaliert wird, wenn Sie unabhängige Abfragezeitpläne erstellen.
Schrittweise
Die schrittweise Skalierung eignet sich für Arbeitslasten mit kleinen oder mehreren Spitzen. Dadurch werden Kapazitäten bereitgestellt, um sie mit einem einzigen Autoscaling-Ereignis auszugleichen.
Das folgende Diagramm zeigt ein Lastmuster mit mehreren Lastplateaus oder -schritten, bei denen jeder Schritt mehrere kleine Spitzen hat. Dieses Muster eignet sich gut für die schrittweise Methode.
Wenn die Belastungsschwelle überschritten wird, stellt diese Methode Knoten oder Verarbeitungseinheiten bereit und entfernt diese mithilfe einer festen, aber konfigurierbaren Zahl. Beispielsweise werden für jede Skalierungsaktion drei Knoten hinzugefügt oder entfernt. Wenn Sie die Konfiguration ändern, können Sie jederzeit größere Kapazitätsinkremente hinzufügen oder entfernen.
Linear
Die lineare Skalierung eignet sich am besten für Lastmuster, die sich allmählich ändern oder nur wenige große Spitzen haben. Die Methode berechnet die Mindestanzahl an Knoten oder Verarbeitungseinheiten, die erforderlich sind, damit die Auslastung unter dem Skalierungsschwellenwert liegt. Die Anzahl der Knoten oder Verarbeitungseinheiten, die bei den einzelnen Skalierungsereignissen hinzugefügt oder entfernt werden, ist nicht auf einen festen Schritt beschränkt.
Das Beispiellastmuster im folgenden Diagramm zeigt größere plötzliche Zu- und Abnahmen der Last. Diese Schwankungen werden nicht wie im vorherigen Diagramm in diskreten Schritten gruppiert. Dieses Muster kann mit linearer Skalierung einfacher verarbeitet werden.
Das Autoscaling-Tool verwendet das Verhältnis der beobachteten Auslastung zum Auslastungsgrenzwert, um zu berechnen, ob Knoten oder Verarbeitungseinheiten von der aktuellen Gesamtzahl hinzugefügt oder subtrahiert werden sollen.
Die neue Formel zur Berechnung der neuen Anzahl von Knoten oder Verarbeitungseinheiten lautet:
newSize = currentSize * currentUtilization / utilizationThreshold
Direkt
Die direkte Skalierung bietet eine sofortige Erhöhung der Kapazität. Diese Methode ist für die Unterstützung von Batcharbeitslasten gedacht, bei denen gemäß einem Zeitplan mit einer bekannten Startzeit regelmäßig eine höhere Knotenzahl erforderlich ist. Bei dieser Methode wird die Instanz bis zur maximal zulässigen Anzahl von Knoten oder Verarbeitungseinheiten im Zeitplan skaliert. Die Methode soll zusätzlich zur linearen oder schrittweisen Methode verwendet werden.
Das folgende Diagramm zeigt die große geplante Erhöhung der Last, wobei dem Autoscaling vorab Kapazität für die direkte Methode bereitgestellt wurde.
Sobald die Batcharbeitslast abgeschlossen ist und die Auslastung wieder auf dem normalen Niveau ist, wird je nach Konfiguration die lineare oder schrittweise Skalierung angewendet, um die Instanz automatisch herunterzuskalieren.
Bereitstellungsmethoden
Das Autoscaling-Tool kann entweder in einem einzelnen Projekt oder neben den verwalteten Spanner-Instanzen bereitgestellt werden. Das Autoscaling-Tool ist für Flexibilität ausgelegt und kann die bestehende Trennung der Aufgabenbereiche der Betriebs- und Anwendungsteams berücksichtigen. Die Verantwortung für die Konfiguration des Autoscalings von Spanner-Instanzen kann zentralisiert mit einem einzelnen Betriebsteam sein oder es kann an die Teams weiter verteilt werden, die den Anwendungen zugeordnet sind, die von diesen Spanner-Instanzen bereitgestellt werden.
Die verschiedenen Bereitstellungsmodelle werden unter Bereitstellungstopologien ausführlicher behandelt.
Serverlose Bereitstellung und einfache Verwaltung
Das Autoscaling-Tool wird nur mit serverlosen und verwaltungsarmen Google Cloud Tools wie Cloud Run-Funktionen, Pub/Sub, Cloud Scheduler und Firestore erstellt. Mit diesem Ansatz werden die Kosten und der operative Aufwand für die Ausführung des Autoscaling-Tools minimiert.
Mithilfe der integrierten Google Cloud Tools kann das Autoscaling IAM für die Authentifizierung und Autorisierung in vollem Umfang nutzen.
Konfiguration
Das Autoscaling-Tool bietet verschiedene Konfigurationsoptionen, mit denen Sie die Skalierung Ihrer Spanner-Bereitstellungen verwalten können. In den nächsten Abschnitten werden die grundlegenden Konfigurationsoptionen und erweiterte Konfigurationsoptionen beschrieben.
Basiskonfiguration
Das Autoscaling-Tool verwaltet Spanner-Instanzen über die in Cloud Scheduler definierte Konfiguration. Wenn mehrere Spanner-Instanzen mit demselben Intervall abgefragt werden müssen, empfehlen wir Ihnen, diese im selben Cloud Scheduler-Job zu konfigurieren. Die Konfiguration der einzelnen Instanzen wird als JSON-Objekt dargestellt. Das folgende Beispiel zeigt eine Konfiguration, bei der zwei Spanner-Instanzen mit einem einzigen Cloud Scheduler-Job verwaltet werden:
[
{
"projectId": "my-spanner-project", "instanceId": "spanner1",
"scalerPubSubTopic": "projects/my-spanner-project/topics/spanner-scaling",
"units": "NODES", "minSize": 1, "maxSize": 3
},
{
"projectId":
"different-project", "instanceId": "another-spanner1", "scalerPubSubTopic":
"projects/my-spanner-project/topics/spanner-scaling", "units":
"PROCESSING_UNITS", "minSize": 500, "maxSize": 3000, "scalingMethod": "DIRECT"
}
]
Spanner-Instanzen können mehrere Konfigurationen für verschiedene Cloud Scheduler-Jobs haben. Eine Instanz kann beispielsweise eine Autoscaling-Konfiguration mit der linearen Methode für normale Vorgänge haben, aber auch eine weitere Autoscaling-Konfiguration mit der direkten Methode für geplante Batcharbeitslasten.
Wenn der Cloud Scheduler-Job ausgeführt wird, sendet er eine Pub/Sub-Nachricht an das Abfrage-Pub/Sub-Thema. Die Nutzlast dieser Nachricht ist das JSON-Array der Konfigurationsobjekte für alle Instanzen, die im selben Job konfiguriert wurden. Eine vollständige Liste der Konfigurationsoptionen finden Sie in der Poller-README
-Datei.
Erweiterte Konfiguration
Das Autoscaling-Tool bietet erweiterte Konfigurationsoptionen, mit denen Sie präziser steuern können, wann und wie Ihre Spanner-Instanzen verwaltet werden. In den folgenden Abschnitten wird eine Auswahl dieser Steuerelemente vorgestellt.
Benutzerdefinierte Grenzwerte
Das Autoscaling-Tool bestimmt anhand der empfohlenen Spanner-Schwellenwerte für die folgenden Lademesswerte die Anzahl der Knoten oder Verarbeitungseinheiten, die einer Instanz hinzugefügt oder subtrahiert werden:
- CPU mit hoher Priorität
- Gleitender 24-Stunden-Durchschnitt der CPU
- Speicherauslastung
Wir empfehlen, die unter Benachrichtigungen für Spanner-Messwerte erstellen beschriebenen Standardgrenzwerte zu verwenden. In einigen Fällen können Sie jedoch die vom Autoscaling-Tool verwendeten Grenzwerte ändern. Beispielsweise können Sie niedrigere Grenzwerte verwenden, damit das Autoscaling-Tool schneller reagiert als bei höheren Grenzwerten. Durch diese Änderung wird verhindert, dass Benachrichtigungen bei höheren Grenzwerten ausgelöst werden.
Benutzerdefinierte Messwerte
Die Standardmesswerte im Autoscaling-Tool decken zwar die meisten Leistungs- und Skalierungsszenarien ab, in einigen Fällen müssen Sie jedoch eigene Messwerte festlegen, um zu bestimmen, wann eine Skalierung erfolgt. In diesen Szenarien definieren Sie benutzerdefinierte Messwerte in der Konfiguration mithilfe des Attributs metrics
.
Ränder
Eine Marge definiert eine obere und eine untere Grenze um den Grenzwert. Das Autoscaling-Tool löst nur dann ein Autoscaling-Ereignis aus, wenn der Messwert über oder unter dem unteren Grenzwert liegt.
Das Ziel dieses Parameters besteht darin, Autoscaling-Ereignisse zu vermeiden, die bei kleinen Arbeitslastschwankungen um den Grenzwert ausgelöst werden. So werden die Schwankungen der Autoscaling-Aktionen reduziert. Der Grenzwert und die Marge zusammen definieren den Bereich so, wie der Messwert sein soll:
[threshold - margin, threshold + margin]
Die Angabe eines Margenparameters für einen Messwert ist optional und standardmäßig auf fünf Prozentpunkte sowohl ober- als auch unterhalb des Parameters eingestellt.
Bereitstellungstopologien
Für die Bereitstellung des Autoscaling-Tools entscheiden Sie sich, welche der folgenden Topologien am besten Ihren technischen und operativen Anforderungen entspricht:
- Topologie pro Projekt: Die Autoscaling-Infrastruktur wird im selben Projekt wie Spanner bereitgestellt, das automatisch skaliert werden muss.
- Zentrale Topologie: Das Autoscaling-Tool wird in einem Projekt bereitgestellt und verwaltet eine oder mehrere Spanner-Instanzen in verschiedenen Projekten.
- Verteilte Topologie: Der Großteil der Autoscaling-Infrastruktur wird in einem Projekt bereitgestellt. Bei einigen Infrastrukturkomponenten werden die Spanner-Instanzen jedoch in verschiedenen Projekten automatisch skaliert.
Projektspezifische Topologie
In einer projektspezifischen Topologiebereitstellung hat jedes Projekt mit einer Spanner-Instanz, die automatisch skaliert werden muss, eine eigene unabhängige Bereitstellung der Autoscaling-Komponenten. Diese Topologie wird für unabhängige Teams empfohlen, die ihre eigene Autoscaling-Konfiguration und -Infrastruktur verwalten möchten. Es ist auch ein guter Ausgangspunkt für das Testen der Funktionen des Autoscaling-Tools.
Das folgende Diagramm zeigt eine allgemeine konzeptionelle Ansicht einer projektspezifischen Bereitstellung.
Die im vorherigen Diagramm dargestellten projektspezifischen Bereitstellungen haben folgende Eigenschaften:
- Zwei Anwendungen (Anwendung 1 und Anwendung 2) verwenden jeweils ihre eigenen Spanner-Instanzen.
- Spanner-Instanzen (A) befinden sich in den Projekten der Anwendungen 1 und 2.
- In jedem Projekt wird ein unabhängiges Autoscaling (B) bereitgestellt, um das Autoscaling der Instanzen in einem Projekt zu steuern.
Ein detaillierteres Diagramm einer projektspezifischen Bereitstellung finden Sie im Abschnitt Architektur.
Die projektspezifische Bereitstellung hat folgende Vor- und Nachteile.
Vorteile:
- Einfachstes Design: Die Topologie pro Projekt ist das einfachste Design der drei Topologien, da alle Autoscaling-Komponenten zusammen mit den Spanner-Instanzen bereitgestellt werden, die automatisch skaliert werden.
- Konfiguration: Die Kontrolle über Scheduler-Parameter gehört dem Team, das die Spanner-Instanz besitzt. Das Team kann somit mehr Anpassungsmöglichkeiten für das Autoscaling-Tool haben als an einem zentralisierten oder verteilten Topologie.
- Klare Grenze der Infrastrukturverantwortliche: Das Design einer projektbezogenen Topologie bildet eine klare Verantwortlichkeit und Sicherheit für die Autoscaling-Infrastruktur, da der Teaminhaber der Spanner-Instanzen auch der Besitzer der Autoscaling-Infrastruktur ist.
Nachteile:
- Mehr Wartung insgesamt: Jedes Team ist für die Konfiguration und Infrastruktur des Autoscalings verantwortlich. Daher kann es schwierig sein, sicherzustellen, dass alle Autoscaling-Tools im gesamten Unternehmen den gleichen Aktualisierungsrichtlinien folgen.
- Komplexere Prüfung: Da jedes Team eine hohe Kontrolle hat, kann ein zentralisiertes Audit komplexer werden.
Informationen zum Einrichten des Autoscalings mit einer projektspezifischen Topologie finden Sie unter Projektspezifisches oder zentralisiertes Autoscaling-Tool für Spanner bereitstellen.
Zentralisierte Topologie
Wie bei der projektspezifischen Topologie befinden sich in einer zentralisierten Topologiebereitstellung alle Komponenten des Autoscaling-Tools im selben Projekt. Die Spanner-Instanzen befinden sich jedoch in verschiedenen Projekten. Diese Bereitstellung eignet sich für ein Team, das die Konfiguration und Infrastruktur mehrerer Spanner-Instanzen über eine einzige Bereitstellung des Autoscaling-Tools an einem zentralen Ort verwaltet.
Das folgende Diagramm zeigt eine allgemeine konzeptionelle Ansicht einer Bereitstellung mit zentralisiertem Projekt:
Die im vorherigen Diagramm dargestellte zentralisierte Bereitstellung hat folgende Eigenschaften:
- Zwei Anwendungen (Anwendung 1 und Anwendung 2) verwenden jeweils ihre eigenen Spanner-Instanzen.
- Spanner-Instanzen (A) befinden sich in den Projekten der Anwendungen 1 und 2.
- Autoscaling (B) wird in einem separaten Projekt bereitgestellt, um das Autoscaling der Spanner-Instanzen sowohl in den Projekten der Anwendung 1 als auch der Anwendung 2 zu steuern.
Ein detaillierteres Diagramm der Bereitstellung mit zentralisiertem Projekt finden Sie unter Projektspezifisches oder zentralisiertes Autoscaling-Tool für Spanner bereitstellen.
Eine zentralisierte Bereitstellung hat folgende Vor- und Nachteile.
Vorteile:
- Zentrale Konfiguration und Infrastruktur: Ein einziges Team steuert die Planerparameter und die Autoscaling-Infrastruktur. Dieser Ansatz kann in stark regulierten Branchen nützlich sein.
- Weniger Wartung insgesamt: Wartungen und Einrichtungsaufwand haben im Vergleich zu einer Pro-Projekt-Bereitstellung meist weniger Aufwand.
- Zentrale Richtlinien und Audits: Die Best Practices zwischen den Teams können möglicherweise leichter angegeben und umgesetzt werden. Audits können einfacher ausgeführt werden.
Nachteile:
- Zentrale Konfiguration: Änderungen an den Autoscaling-Parametern müssen über das zentralisierte Team erfolgen, obwohl das Team, das die Änderung anfordert, zu der Spanner-Instanz gehört.
- Potenzial für zusätzliche Risiken: Das zentralisierte Team selbst kann zu einem Single Point of Failure werden, auch wenn die Autoscaling-Infrastruktur im Hinblick auf Hochverfügbarkeit konzipiert ist.
Eine detaillierte Anleitung zum Einrichten des Autoscaling-Tools mit dieser Option finden Sie unter Projektspezifisches oder zentralisiertes Autoscaling-Tool für Spanner bereitstellen.
Verteilte Topologie
Bei einer Bereitstellung mit verteilter Topologie befinden sich die Cloud Scheduler- und Spanner-Instanzen, die automatisch skaliert werden müssen, im selben Projekt. Die verbleibenden Komponenten des Autoscaling-Tools befinden sich in einem zentral verwalteten Projekt. Diese Bereitstellung ist eine Hybridbereitstellung. Teams, die die Spanner-Instanzen besitzen, verwalten nur die Autoscaling-Konfigurationsparameter für ihre Instanzen und ein zentrales Team verwaltet die verbleibende Autoscaling-Infrastruktur.
Das folgende Diagramm zeigt eine allgemeine konzeptionelle Ansicht einer Bereitstellung mit verteiltem Projekt.
Die im vorherigen Diagramm dargestellte Hybridbereitstellung hat folgende Eigenschaften:
- Zwei Anwendungen (Anwendung 1 und Anwendung 2) verwenden ihre eigenen Spanner-Instanzen.
- Die Spanner-Instanzen (A) befinden sich in den Projekten der Anwendungen 1 und 2.
- In jedem Projekt wird eine unabhängige Cloud Scheduler-Komponente (C) bereitgestellt: Anwendung 1 und Anwendung 2.
- Die verbleibenden Autoscaling-Komponenten (B) werden in einem separaten Projekt bereitgestellt.
- Mit dem Autoscaling-Tool werden die Spanner-Instanzen sowohl in Projekten der Anwendung 1 als auch der Anwendung 2 automatisch mithilfe der Konfigurationen skaliert, die von den unabhängigen Cloud Scheduler-Komponenten in jedem Projekt gesendet werden.
Ein detaillierteres Diagramm der Bereitstellung mit zentralisiertem Projekt finden Sie unter Verteiltes Autoscaling-Tool für Spanner bereitstellen.
Eine verteilte Bereitstellung hat die folgenden Vorteile und Nachteile.
Vorteile:
- Anwendungsteams steuern die Konfiguration und die Zeitpläne: Cloud Scheduler wird zusammen mit den Spanner-Instanzen bereitgestellt, die automatisch skaliert werden. Damit erhalten Anwendungsteams mehr Kontrolle über Konfiguration und Planung.
- Betriebsteam steuert die Infrastruktur: Die Kernkomponenten des Autoscaling-Tools werden zentral bereitgestellt. Dadurch erhalten die Betriebsteams die Kontrolle über die Autoscaling-Infrastruktur.
- Zentrale Wartung: Die Infrastruktur ist komplex und reduziert den Aufwand.
Nachteile:
- Komplexere Konfiguration: Anwendungsteams müssen Dienstkonten bereitstellen, um in das Abfragethema schreiben zu können.
- Potenzial für zusätzliche Risiken: Die gemeinsam genutzte Infrastruktur kann zu einem Single Point of Failure werden, auch wenn die Infrastruktur im Hinblick auf Hochverfügbarkeit konzipiert ist.
Informationen zum Einrichten des Autoscaling-Tools in einer verteilten Bereitstellung finden Sie unter Verteiltes Autoscaling-Tool für Spanner bereitstellen.
Datenaufteilungen
Spanner weist Datenbereiche, die als Splits bezeichnet werden, Knoten oder Unterteilungen eines Knotens zu, die als Verarbeitungseinheiten bezeichnet werden. Die Knoten oder Verarbeitungseinheiten verwalten und liefern Daten unabhängig in den aufgeteilten Splits. Datenaufteilungen werden auf der Grundlage verschiedener Faktoren erstellt, wie z. B. Datenvolumen und Zugriffsmuster. Weitere Informationen finden Sie unter Spanner – Schema und Datenmodell.
Daten werden in Aufteilungen organisiert und Spanner verwaltet die Aufteilungen automatisch. Wenn das Autoscaling-Tool also Knoten oder Verarbeitungseinheiten hinzufügt oder entfernt, muss das Spanner-Backend genügend Zeit haben, die Aufteilungen neu zuzuweisen und neu zu ordnen, wenn Kapazität den Instanzen hinzugefügt oder von ihnen entfernt wird.
Das Autoscaling-Tool verwendet Cooldown-Zeiten für das Hoch- und Herunterskalieren, um zu steuern, wie schnell Knoten oder Verarbeitungseinheiten zu einer Instanz hinzugefügt oder daraus entfernt werden können. Diese Methode gibt der Instanz die erforderliche Zeit, die Beziehungen zwischen Compute-Hinweisen oder Verarbeitungseinheiten und Datenaufteilungen neu zu organisieren. Standardmäßig werden die Cooldown-Zeiträume für vertikale Skalierung und horizontale Skalierung auf die folgenden Mindestwerte festgelegt:
- Wert für die vertikale Skalierung: 5 Minuten
- Wert für das Herunterskalieren: 30 Minuten
Weitere Informationen zu Skalierungsempfehlungen und Cooldown-Zeiträumen finden Sie unter Spanner-Instanzen skalieren.
Kosten
Die Ressourcennutzung des Autoscaling-Tools ist minimal. Daher sind die Kosten für die meisten Anwendungsfälle vernachlässigbar. Wenn das Autoscaling in Google Cloudverwendet wird, entstehen keine Kosten. Beispielsweise ist das Ausführen eines Autoscaling-Tools zur Verwaltung von drei Spanner-Instanzen mit einem Abfrageintervall von 5 Minuten pro Instanz kostenlos. Diese Schätzung umfasst Folgendes:
- 3 Cloud Scheduler-Jobs
- 0,15 GB Pub/Sub-Nachrichten
- 51.840 Cloud Run-Funktion – 500 ms Aufrufe
- Weniger als 10 MB Daten in Firestore
Die Schätzung enthält nicht die Kosten für den Spanner-Datenbankbetrieb. Mit dem Preisrechner können Sie eine Kostenschätzung für die voraussichtliche Nutzung erstellen.
Nächste Schritte
- Informationen zum Bereitstellen des Autoscaling-Tools in einer projektspezifischen oder zentralisierten Topologie
- Informationen zum Bereitstellen des Autoscaling-Tools in einer verteilten Topologie
- Empfohlene Schwellenwerte für Spanner
- Weitere Informationen zu CPU-Auslastungsmesswerten und Latenzmesswerten in Spanner
- Best Practices für das Spanner-Schemadesign, um Hotspots zu vermeiden und Daten in Spanner zu laden.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center