Autoscaling-Tool – Übersicht

Auf dieser Seite wird das Autoscaling-Tool für Spanner (Autoscaling) vorgestellt. Dabei handelt es sich um ein Open-Source-Tool, das Sie als Begleittool zu Spanner verwenden können. Mit diesem Tool können Sie die Rechenkapazität in einer oder mehreren Spanner-Instanzen automatisch je nach der genutzten Kapazität erhöhen oder reduzieren.

Weitere Informationen zur Skalierung in Spanner finden Sie unter Autoscaling von Spanner. Informationen zum Bereitstellen des Autoscaling-Tools finden Sie hier:

Auf dieser Seite werden die Features, die Architektur, die Konfiguration und die Bereitstellungstopologien des Autoscalings vorgestellt. Die Themen, die in dieser Reihe fortgesetzt werden, führen Sie durch die Bereitstellung von Autoscaling in den verschiedenen Topologien.

Autoscaling

Das Autoscaling-Tool ist nützlich, um die Auslastung und Leistung Ihrer Spanner-Bereitstellungen zu verwalten. Damit Sie ein Gleichgewicht zwischen Kostenkontrolle und Leistungsanforderungen finden können, überwacht das Autoscaling-Tool Ihre Instanzen und fügt Knoten oder Verarbeitungseinheiten automatisch hinzu oder entfernt diese, um sicherzustellen, dass sie innerhalb der folgenden Parameter bleiben:

Durch das Autoscaling von Spanner-Bereitstellungen kann Ihre Infrastruktur automatisch und ohne oder mit nur geringem Eingriff an die Lastanforderungen angepasst und skaliert werden. 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 Functions und Firestore. Mit der Cloud Monitoring API werden CPU-Auslastungs- und Speichermesswerte für Spanner-Instanzen abgerufen.

Cloud Scheduler

Mit Cloud Scheduler definieren Sie, wie oft das Autoscaling-Tool die Schwellenwerte für die 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.

Poller Cloud Functions-Funktion

Die Cloud Functions-Funktion Poller ist für das Erfassen und Verarbeiten der Zeitachsenmesswerte für eine oder mehrere Spanner-Instanzen verantwortlich. Der Poller verarbeitet die Messwertdaten für jede Spanner-Instanz vorverarbeitet, sodass nur die relevantesten Datenpunkte ausgewertet und an die Cloud Functions-Funktion für Skalierung gesendet werden. Die Vorverarbeitung durch die Poller-Cloud Functions-Funktion vereinfacht auch die Auswertung von Schwellenwerten für regionale und multiregionale Spanner-Instanzen.

Scaler Cloud Functions-Funktion

Die Cloud Functions-Funktion für Skalierung wertet die von der Poller-Cloud Functions-Funktion empfangenen Datenpunkte aus und bestimmt, ob Sie die Anzahl der Knoten oder Verarbeitungseinheiten anpassen müssen, und wenn ja, um wie viel. Die Cloud Functions-Funktion vergleicht die Messwerte mit dem Schwellenwert, zuzüglich oder abzüglich 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 Betriebsmodell des Autoscaling-Tools beschrieben, wie im folgenden Architekturdiagramm dargestellt.

Operatives Autoscaling-Modell.

  1. Sie legen Zeitplan, Zeit und Häufigkeit Ihrer Autoscaling-Jobs in Cloud Scheduler fest.
  2. Nach dem von Ihnen definierten Zeitplan überträgt Cloud Scheduler eine Nachricht, die eine JSON-Nutzlast mit den Konfigurationsparametern des Autoscaling-Tools für eine oder mehrere Spanner-Instanzen enthält, an das Pub/Sub-Thema Polling.
  3. Wenn die Nachricht im Thema „Umfrage“ veröffentlicht wird, wird eine Instanz der Poller Cloud-Functions-Funktion erstellt, um die Nachricht zu verarbeiten.
  4. Die Cloud Functions-Funktion Poller liest die Nachrichtennutzlast und fragt die Cloud Monitoring API ab, um die Auslastungsmesswerte für jede Spanner-Instanz abzurufen.
  5. Die Abfragefunktion sendet für jede in der Nachricht aufgelistete Spanner-Instanz eine Nachricht an das Pub/Sub-Thema zur Skalierung. Diese enthält die Messwerte und Konfigurationsparameter, die für die jeweilige Spanner-Instanz geprüft werden sollen.
  6. Für jede Nachricht, die in das Scaler-Thema übertragen wird, führt die Cloud Functions-Funktion folgende Schritte aus:

    1. Vergleicht die Messwerte der Spanner-Instanz mit den konfigurierten Schwellenwerten zuzüglich 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 anhand der ausgewählten Skalierungsmethode skaliert werden soll.

  7. Die Cloud Functions-Funktion für Skalierung ruft den Zeitpunkt ab, an dem die Instanz zuletzt aus Firestore skaliert wurde, und vergleicht sie mit der aktuellen Zeit, um anhand der Wartezeiten zu bestimmen, ob das Hoch- oder Herunterskalieren zulässig ist.

  8. Wenn die konfigurierte Wartezeit abgelaufen ist, sendet Cloud Function für die Skalierung eine Anfrage zum Hoch- oder Herunterskalieren an die Spanner-Instanz.

Während des gesamten Ablaufs schreibt das Autoscaling-Tool eine Zusammenfassung der Empfehlungen und Aktionen in Cloud Logging, um sie nachzuverfolgen und zu prüfen.

Unabhängig von der gewählten Bereitstellungstopologie bleibt der gesamte Vorgang des Autoscaling-Tools gleich.

Autoscaling-Features

In diesem Abschnitt werden die wichtigsten Funktionen des Autoscaling-Tools beschrieben.

Mehrere Instanzen verwalten

Das Autoscaling-Tool kann mehrere Spanner-Instanzen in mehreren Projekten verwalten. Multiregionale und regionale Instanzen haben unterschiedliche Nutzungsgrenzwerte, die für die Skalierung verwendet werden. Multiregionale Bereitstellungen werden beispielsweise bei einer CPU-Auslastung mit hoher Priorität von 45% skaliert, während regionale Deployments bei 65% CPU-Auslastung mit hoher Priorität skaliert werden – plus oder minus einer zulässigen Marge. Weitere Informationen zu den verschiedenen Schwellenwerten für die Skalierung finden Sie unter Benachrichtigungen bei hoher 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 darf, um Ihnen bei der Kostenkontrolle zu helfen.
  • Die Skalierungsmethode, mit der die Spanner-Instanz an die jeweilige Arbeitslast angepasst wird.
  • Die Wartezeiten, in denen Spanner Datenaufteilungen verwalten kann.

Unterschiedliche Skalierungsmethoden für verschiedene Arbeitslasten

Das Autoscaling-Tool bietet drei verschiedene Skalierungsmethoden zum Hoch- und Herunterskalieren Ihrer Spanner-Instanzen: schrittweise, linear und direkt. Die einzelnen Methoden sind jeweils auf unterschiedliche Arten von Arbeitslasten ausgelegt. Wenn Sie unabhängige Abfragepläne erstellen, können Sie eine oder mehrere Methoden auf jede automatisch skalierte Spanner-Instanz anwenden.

Schrittweise

Die schrittweise Skalierung ist nützlich für Arbeitslasten mit kleinen oder mehreren Spitzen. Dabei werden Kapazitäten bereitgestellt, die mit einem einzigen Autoscaling-Ereignis ausgeglichen werden.

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.

Lastmuster mit mehreren Schritten.

Wenn der Lastgrenzwert überschritten wird, werden mit dieser Methode Knoten oder Verarbeitungseinheiten mithilfe einer festen, aber konfigurierbaren Zahl bereitgestellt und entfernt. Beispielsweise werden für jede Skalierungsaktion drei Knoten hinzugefügt oder entfernt. Wenn Sie die Konfiguration ändern, können Sie jederzeit größere Kapazitätsstufen 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 jedem Skalierungsereignis hinzugefügt oder entfernt werden, ist nicht auf einen festen Schrittbetrag 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.

Lastmuster mit Schwankungen.

Das Autoscaling-Tool verwendet das Verhältnis der beobachteten Auslastung zum Auslastungsgrenzwert, um zu berechnen, ob Knoten oder Verarbeitungseinheiten zur aktuellen Gesamtzahl hinzugefügt oder davon abgezogen 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. Diese Methode skaliert die Instanz bis zur im Zeitplan angegebenen maximalen Anzahl von Knoten oder Verarbeitungseinheiten und sollte zusätzlich zu einer 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.

Lastmuster mit vorab bereitgestellter direkter Skalierung.

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 zusammen mit den von ihm verwalteten Spanner-Instanzen bereitgestellt werden. Das Autoscaling-Tool ist so konzipiert, dass es flexibel ist und die bestehende Trennung der Verantwortlichkeiten zwischen Ihren Betriebs- und Anwendungsteams berücksichtigt. Die Verantwortung für die Konfiguration der automatischen Skalierung von Spanner-Instanzen kann von einem einzelnen Betriebsteam zentralisiert werden oder auf die Teams verteilt werden, die näher an den Anwendungen sind, die von diesen Spanner-Instanzen bereitgestellt werden.

Die verschiedenen Bereitstellungsmodelle werden unter Bereitstellungstopologien ausführlicher erläutert.

Serverlose Bereitstellung und einfache Verwaltung

Das Autoscaling-Tool wurde mit serverlosen Google Cloud-Tools mit geringem Verwaltungsaufwand erstellt, z. B. Cloud Functions, Pub/Sub, Cloud Scheduler und Firestore. Dieser Ansatz minimiert die Kosten und den operativen Aufwand für die Ausführung des Autoscaling-Tools.

Mit integrierten Google Cloud-Tools kann das Autoscaling-Tool die Vorteile von IAM (IAM) für die Authentifizierung und Autorisierung voll ausschöpfen.

Konfiguration

Das Autoscaling-Tool bietet verschiedene Konfigurationsoptionen, mit denen Sie die Skalierung Ihrer Spanner-Deployments verwalten können. In den nächsten Abschnitten werden die Basiskonfigurationsoptionen 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, sie im selben Cloud Scheduler-Job zu konfigurieren. Die Konfiguration jeder Instanz wird als JSON-Objekt dargestellt. Das folgende Beispiel zeigt eine Konfiguration, bei der zwei Spanner-Instanzen mit einem 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 genauer steuern können, wann und wie Ihre Spanner-Instanzen verwaltet werden. In den folgenden Abschnitten werden einige dieser Steuerelemente vorgestellt.

Benutzerdefinierte Grenzwerte

Das Autoscaling-Tool bestimmt die Anzahl der Knoten oder Verarbeitungseinheiten, die einer Instanz hinzugefügt oder abgezogen werden sollen, anhand der empfohlenen Spanner-Schwellenwerte für die folgenden Lastmesswerte:

  • CPU mit hoher Priorität
  • Gleitender 24-Stunden-Durchschnitt der CPU
  • Speicherauslastung

Wir empfehlen die Verwendung der Standardgrenzwerte, wie unter Benachrichtigungen für Spanner-Messwerte erstellen beschrieben. In manchen Fällen möchten Sie jedoch die vom Autoscaling-Tool verwendeten Schwellenwerte ändern. Sie könnten beispielsweise niedrigere Grenzwerte verwenden, damit das Autoscaling-Tool schneller reagiert als höhere Grenzwerte. Diese Änderung trägt dazu bei, zu verhindern, dass Benachrichtigungen bei höheren Schwellenwerten ausgelöst werden.

Benutzerdefinierte Messwerte

Die Standardmesswerte des Autoscaling-Tools sind für die meisten Leistungs- und Skalierungsszenarien geeignet. Es gibt jedoch Fälle, in denen Sie eigene Messwerte angeben müssen, um den Zeitpunkt für das Herunter- und Herunterskalieren zu bestimmen. In diesen Szenarien definieren Sie benutzerdefinierte Messwerte in der Konfiguration mit dem Attribut 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 der Obergrenze oder unter der Untergrenze 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]
Je kleiner der Grenzwert, desto kleiner ist der Bereich und desto höher ist die Wahrscheinlichkeit, dass ein Autoscaling-Ereignis ausgelöst wird.

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

Entscheiden Sie vor der Bereitstellung des Autoscaling-Tools, welche der folgenden Topologien Ihren technischen und betrieblichen Anforderungen am besten 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 größte Teil der Autoscaling-Infrastruktur wird in einem Projekt bereitgestellt. Einige Infrastrukturkomponenten werden jedoch mit den Spanner-Instanzen 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. Er ist auch ein guter Ausgangspunkt, um die Funktionen des Autoscaling-Tools zu testen.

Das folgende Diagramm zeigt eine allgemeine konzeptionelle Ansicht einer projektspezifischen Bereitstellung.

Konzeptionelle projektspezifische Bereitstellung.

Die im vorherigen Diagramm dargestellten Bereitstellungen pro Projekt haben folgende Eigenschaften:

  • Die beiden Anwendungen, Anwendung 1 und Anwendung 2, verwenden jeweils ihre eigenen Spanner-Instanzen.
  • Spanner-Instanzen (A) befinden sich in den jeweiligen Projekten „Anwendung 1“ und „Anwendung 2“.
  • In jedem Projekt wird ein unabhängiges Autoscaling (B) bereitgestellt, um das Autoscaling der Instanzen innerhalb eines Projekts zu steuern.

Ausführlichere Informationen zur projektspezifischen Bereitstellung finden Sie im Abschnitt Architektur.

Die projektspezifische Bereitstellung hat folgende Vor- und Nachteile.

Vorteile:

  • Einfachstes Design: Die projektbezogene Topologie ist die einfachste Topologie der drei Topologien, da alle Autoscaling-Komponenten zusammen mit den Spanner-Instanzen bereitgestellt werden, die automatisch skaliert werden.
  • Konfiguration: Die Kontrolle über Planerparameter gehört dem Team, dem die Spanner-Instanz gehört. Dadurch hat das Team mehr Freiheiten, das Autoscaling-Tool an seine Anforderungen anzupassen, als eine zentrale oder verteilte 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:

  • Umfassendere Wartung: Jedes Team ist für die Autoscaling-Konfiguration und -Infrastruktur verantwortlich. Daher kann es schwierig werden, sicherzustellen, dass alle Autoscaling-Tools im Unternehmen denselben Update-Richtlinien 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 Tool für Spanner pro Projekt oder zentralisiertes Autoscaling bereitstellen.

Zentralisierte Topologie

Wie bei der projektspezifischen Topologie befinden sich bei 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 ein einziges Deployment des Autoscaling-Tools an einem zentralen Ort verwaltet.

Das folgende Diagramm zeigt eine allgemeine konzeptionelle Ansicht einer Bereitstellung mit zentralisiertem Projekt:

Konzeptionelle Bereitstellung mit zentralisiertem Projekt.

Die im vorherigen Diagramm dargestellte zentralisierte Bereitstellung hat folgende Eigenschaften:

  • Die beiden Anwendungen, Anwendung 1 und Anwendung 2, verwenden jeweils ihre eigenen Spanner-Instanzen.
  • Spanner-Instanzen (A) befinden sich in den Projekten „Anwendung 1“ und „Anwendung 2“.
  • Autoscaling (B) wird in einem separaten Projekt bereitgestellt, um das Autoscaling der Spanner-Instanzen in den Projekten "Anwendung 1" und "Anwendung 2" zu steuern.

Ein detaillierteres Diagramm einer Bereitstellung in einem zentralisierten Projekt finden Sie unter Tool für Spanner pro Projekt oder zentralisiertes Autoscaling bereitstellen.

Eine zentralisierte Bereitstellung hat folgende Vor- und Nachteile.

Vorteile:

  • Zentrale Konfiguration und Infrastruktur: Die Planerparameter und die Autoscaling-Infrastruktur werden von einem einzigen Team verwaltet. Dieser Ansatz kann in stark regulierten Branchen hilfreich sein.
  • Weniger Wartungsaufwand: Wartung und Einrichtung sind in der Regel geringerer Verwaltungsaufwand als bei einer projektspezifischen Bereitstellung.
  • 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: Jede Änderung an den Autoscaling-Parametern muss das zentrale Team durchlaufen, auch wenn das Team, das die Änderung anfordert, Inhaber der Spanner-Instanz ist.
  • Potenzial für zusätzliches Risiko: Das zentralisierte Team kann selbst dann zu einem Single Point of Failure werden, wenn die Autoscaling-Infrastruktur auf Hochverfügbarkeit ausgelegt ist.

Eine Schritt-für-Schritt-Anleitung zum Einrichten des Autoscaling-Tools mit dieser Option finden Sie unter Ein projektbezogenes oder zentrales Autoscaling-Tool für Spanner bereitstellen.

Verteilte Topologie

Bei einer Bereitstellung einer verteilten Topologie befinden sich die Cloud Scheduler- und Spanner-Instanzen, die automatisch skaliert werden müssen, im selben Projekt. Die übrigen Komponenten des Autoscaling-Tools befinden sich in einem zentral verwalteten Projekt. Diese Bereitstellung ist eine Hybridbereitstellung. Teams, denen die Spanner-Instanzen gehören, 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 verteilter Projekte.

Konzeptionelle Bereitstellung mit verteiltem Projekt.

Die im vorherigen Diagramm dargestellte Hybridbereitstellung hat folgende Eigenschaften:

  • Die beiden 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.
  • Das Autoscaling-Tool skaliert die Spanner-Instanzen in den Projekten "Application 1" und "Application 2" automatisch. Dabei werden die Konfigurationen verwendet, die von den unabhängigen Cloud Scheduler-Komponenten in den einzelnen Projekten gesendet wurden.

Ein detaillierteres Diagramm der Bereitstellung eines zentralisierten Projekts finden Sie unter Verteiltes Autoscaling-Tool für Spanner bereitstellen.

Eine verteilte Bereitstellung hat die folgenden Vorteile und Nachteile.

Vorteile:

  • Anwendungsteams steuern Konfiguration und Zeitpläne: Cloud Scheduler wird zusammen mit den Spanner-Instanzen bereitgestellt, die gerade automatisch skaliert werden. Dadurch haben Anwendungsteams mehr Kontrolle über Konfiguration und Planung.
  • Das Betriebsteam steuert die Infrastruktur: Kernkomponenten des Autoscaling-Tools werden zentral bereitgestellt, sodass Betriebsteams die Kontrolle über die Autoscaling-Infrastruktur haben.
  • Zentralisierte Wartung: Die Skalierungsinfrastruktur wird zentralisiert, wodurch der Aufwand reduziert wird.

Nachteile:

  • Komplexere Konfiguration: Anwendungsteams müssen Dienstkonten bereitstellen, um in das Abfragethema schreiben zu können.
  • Potenzial zusätzlicher Risiken: Die gemeinsam genutzte Infrastruktur kann auch dann zu einem Single Point of Failure werden, wenn die Infrastruktur für 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 Knoten oder Untergruppen eines Knotens, sogenannte Verarbeitungseinheiten, Datenbereiche zu, die als Splits bezeichnet werden. Der Knoten oder die Verarbeitungseinheiten verwalten und liefern die Daten in den aufgeteilten Splits unabhängig. Datenaufteilungen werden anhand mehrerer Faktoren erstellt, darunter Datenvolumen und Zugriffsmuster. Weitere Informationen finden Sie unter Spanner – Schema und Datenmodell.

Die Daten sind in Splits organisiert und Spanner verwaltet die Splits automatisch. Wenn das Autoscaling-Tool Knoten oder Verarbeitungseinheiten hinzufügt oder entfernt, muss es dem Spanner-Back-End genügend Zeit geben, die Aufteilungen neu zuzuweisen und neu zu organisieren, wenn neue Kapazität hinzugefügt oder von Instanzen entfernt wird.

Das Autoscaling-Tool verwendet Wartezeiten für Hoch- und Herunterskalierungsereignisse, um zu steuern, wie schnell Knoten oder Verarbeitungseinheiten zu einer Instanz hinzugefügt oder daraus entfernt werden. Mit dieser Methode erhält die Instanz die nötige Zeit, um die Beziehungen zwischen Rechennotizen oder Verarbeitungseinheiten und Datenaufteilungen neu zu organisieren. Standardmäßig sind die Wartezeiten für Hoch- und Herunterskalierung 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 Wartezeiten finden Sie unter Spanner-Instanzen skalieren.

Kosten

Der Ressourcenverbrauch des Autoscaling-Tools ist minimal, sodass die Kosten in den meisten Anwendungsfällen vernachlässigbar sind. Wenn das Autoscaling in Google Cloud verwendet wird, entstehen keine Kosten. Beispiel: Sie können kostenlos ein Autoscaling-Tool ausführen, um 3 Spanner-Instanzen mit einem Abfrageintervall von 5 Minuten für jede Instanz zu verwalten. Diese Schätzung umfasst Folgendes:

  • 3 Cloud Scheduler-Jobs
  • 0,15 GB Pub/Sub-Nachrichten
  • 51.840 Cloud Functions-Funktion – 500 ms Aufrufe
  • Weniger als 10 MB Daten in Firestore

Die Schätzung enthält nicht die Kosten für Spanner-Datenbankvorgänge. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.

Nächste Schritte