Dieses Prinzip im Bereich der Leistungsoptimierung des Google Cloud -Architektur-Frameworks enthält Empfehlungen zur Einbindung von Elastizität, also der Möglichkeit, Ressourcen dynamisch an sich ändernde Arbeitslastanforderungen anzupassen.
Durch Elastizität können verschiedene Komponenten eines Systems unabhängig skaliert werden. Diese zielgerichtete Skalierung kann die Leistung und Kosteneffizienz verbessern, da Ressourcen genau dort bereitgestellt werden, wo sie benötigt werden, ohne dass sie über- oder unterbelegt werden.
Grundsatzübersicht
Die Leistungsanforderungen eines Systems wirken sich direkt darauf aus, wann und wie das System vertikal oder horizontal skaliert wird. Sie müssen die Kapazität des Systems bewerten und die Last ermitteln, die das System bei der Baseline voraussichtlich bewältigen kann. Anschließend müssen Sie festlegen, wie das System auf Erhöhungen und Verringerungen der Auslastung reagieren soll.
Wenn die Auslastung zunimmt, muss das System horizontal oder vertikal skaliert werden oder beides. Fügen Sie für die horizontale Skalierung Replikknoten hinzu, damit das System eine ausreichende Gesamtkapazität hat, um die erhöhte Nachfrage zu erfüllen. Bei der vertikalen Skalierung ersetzen Sie die vorhandenen Komponenten der Anwendung durch Komponenten mit mehr Kapazität, mehr Arbeitsspeicher und mehr Speicherplatz.
Wenn die Auslastung sinkt, muss das System horizontal, vertikal oder beides gleichzeitig herunterskalieren.
Definieren Sie die Umstände, unter denen das System hoch- oder herunterskaliert wird. Planen Sie, Systeme in bekannten Zeiten mit hohem Traffic manuell zu skalieren. Verwenden Sie Tools wie das Autoscaling, das auf eine Erhöhung oder Verringerung der Last reagiert.
Empfehlungen
Beachten Sie die Empfehlungen in den folgenden Abschnitten, um die Vorteile der Elastizität zu nutzen.
Spitzenlastzeiten planen
Sie müssen einen effizienten Skalierungspfad für bekannte Ereignisse planen, z. B. für erwartete Zeiten mit erhöhter Kundennachfrage.
Sie sollten Ihr System vor bekannten Zeiten mit hohem Traffic hochskalieren. Wenn Sie beispielsweise ein Einzelhandelsunternehmen sind, erwarten Sie eine steigende Nachfrage während saisonaler Sonderangebote. Wir empfehlen, Ihre Systeme vor diesen Verkäufen manuell zu skalieren, damit sie die erhöhte Auslastung sofort bewältigen können, oder vorhandene Limits sofort anzupassen. Andernfalls kann es einige Minuten dauern, bis das System Ressourcen als Reaktion auf Echtzeitänderungen hinzufügt. Die Kapazität Ihrer Anwendung wird möglicherweise nicht schnell genug erhöht, was zu Verzögerungen bei einigen Nutzern führt.
Bei unbekannten oder unerwarteten Ereignissen wie einem plötzlichen Anstieg der Nachfrage oder des Traffics können Sie mithilfe von Autoscaling-Funktionen eine elastische Skalierung auslösen, die auf Messwerten basiert. Dazu gehören die CPU-Auslastung, die Kapazität des Load Balancers, die Latenz und auch benutzerdefinierte Messwerte, die Sie in Cloud Monitoring definieren.
Angenommen, Sie haben eine Anwendung, die in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) der Compute Engine ausgeführt wird. Für diese Anwendung muss jede Instanz optimal funktionieren, bis die durchschnittliche CPU-Auslastung 75 % erreicht. In diesem Beispiel können Sie eine Autoscaling-Richtlinie definieren, mit der mehr Instanzen erstellt werden, wenn die CPU-Auslastung den Grenzwert erreicht. Diese neu erstellten Instanzen tragen dazu bei, die Auslastung zu absorbieren. So bleibt die durchschnittliche CPU-Auslastung optimal, bis die für die MIG konfigurierte maximale Anzahl von Instanzen erreicht ist. Wenn die Nachfrage sinkt, werden die Instanzen, die nicht mehr benötigt werden, gemäß der Autoscaling-Richtlinie entfernt.
Mit dem verwalteten Autoscaler können Sie Ressourcen-Slotreservierungen in BigQuery planen oder die Limits für Autoscaling-Konfigurationen in Spanner anpassen.
Prognosebasierte Skalierung verwenden
Wenn Ihre Systemkomponenten die Compute Engine umfassen, müssen Sie prüfen, ob vorausschauendes Autoscaling für Ihre Arbeitslast geeignet ist. Beim vorausschauenden Autoscaling wird die zukünftige Last anhand der Verlaufstrends Ihrer Messwerte prognostiziert, z. B. der CPU-Auslastung. Prognosen werden alle paar Minuten neu berechnet, sodass das Autoscaling seine Prognose schnell auf die letzten Änderungen der Auslastung anpasst. Ohne vorausschauendes Autoscaling kann das Autoscaling eine Gruppe nur in direkter Reaktion auf beobachtete Laständerungen in Echtzeit skalieren. Das vorausschauende Autoscaling funktioniert sowohl mit Echtzeitdaten als auch mit Verlaufsdaten, um sowohl auf die aktuelle als auch auf die prognostizierte Auslastung zu reagieren.
Serverlose Architekturen implementieren
Sie sollten eine serverlose Architektur mit serverlosen Diensten implementieren, die von Natur aus elastisch sind, z. B.:
Im Gegensatz zum Autoscaling bei anderen Diensten, für das Regeln zur Feinabstimmung erforderlich sind (z. B. Compute Engine), erfolgt das serverlose Autoscaling sofort und kann auf null Ressourcen herunterskaliert werden.
Autopilot-Modus für Kubernetes verwenden
Für komplexe Anwendungen, bei denen eine stärkere Kontrolle über Kubernetes erforderlich ist, können Sie den Autopilot-Modus in der Google Kubernetes Engine (GKE) verwenden. Der Autopilot-Modus bietet standardmäßig Automatisierung und Skalierbarkeit. GKE skaliert Knoten und Ressourcen automatisch basierend auf dem Traffic. GKE verwaltet Knoten, erstellt neue Knoten für Ihre Anwendungen und konfiguriert automatische Upgrades und Reparaturen.