In Datenpipelines kommt es manchmal zu Spitzen bei den veröffentlichten Zugriffen. Die Besucherzahlen können so hoch ansteigen, dass deine Abonnenten überfordert sind, wenn du nicht darauf vorbereitet bist. Eine einfache Lösung, um Traffic-Spitzen zu vermeiden, besteht darin, die Pub/Sub-Abonnentenressourcen dynamisch zu erhöhen, um mehr Nachrichten zu verarbeiten. Diese Lösung kann jedoch die Kosten erhöhen oder nicht sofort funktionieren. Beispielsweise benötigen Sie möglicherweise viele VMs.
Mit der Ablaufsteuerung auf Abonnentenseite kann der Abonnent die Rate steuern, mit der Nachrichten aufgenommen werden. So werden Trafficspitzen durch die Ablaufsteuerung verarbeitet, ohne dass die Kosten steigen oder der Abonnent skaliert werden muss.
Die Ablaufsteuerung ist eine Funktion der Pub/Sub-Clientbibliothek. Wenn Sie eine Low-Level-Clientbibliothek verwenden, können Sie auch Ihre eigene Ablaufsteuerung programmieren.
Die Notwendigkeit der Ablaufsteuerung zeigt, dass Nachrichten mit einer höheren Geschwindigkeit veröffentlicht werden, als sie verarbeitet werden können. Wenn dies ein Dauerzustand ist und kein vorübergehender Anstieg des Nachrichtenvolumens, sollten Sie die Anzahl der Abonnentenclient-Instanzen erhöhen.
Konfiguration der Ablaufsteuerung
Mit der Flusssteuerung können Sie die maximale Anzahl von Bytes konfigurieren, die für ausstehende Anfragen zugewiesen sind, und die maximale Anzahl zulässiger ausstehender Nachrichten. Legen Sie diese Limits entsprechend der Durchsatzkapazität Ihrer Clientmaschinen fest.
Die Standardwerte für die Ablaufsteuerungsvariablen und die Namen der Variablen können sich je nach Clientbibliothek unterscheiden. In der Java-Clientbibliothek werden beispielsweise die folgenden Variablen für die Ablaufsteuerung konfiguriert:
setMaxOutstandingElementCount(): Hiermit wird die maximale Anzahl von Nachrichten definiert, für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.
setMaxOutstandingRequestBytes(): Definiert die maximale Größe von Nachrichten, für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.
Wenn das Limit für setMaxOutstandingElementCount()
oder setMaxOutstandingRequestBytes()
überschritten wird, ruft der Abonnentenclient keine weiteren Nachrichten ab. Dieses Verhalten dauert so lange an, bis die bereits abgerufenen Nachrichten bestätigt oder negativ bestätigt wurden.
So können wir den Durchsatz an die Kosten anpassen, die mit mehr Abonnenten verbunden sind.
Codebeispiele für die Ablaufsteuerung
Mit den Ablaufsteuerungsfunktionen des Abonnenten können Sie die Geschwindigkeit steuern, mit der der Abonnentenclient Nachrichten empfängt. Diese Ablaufsteuerungsfunktionen werden in den folgenden Beispielen veranschaulicht:
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub C# API.
Go
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
Ruby
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Ruby in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Ruby API.
Nächste Schritte
Weitere Auslieferungsoptionen, die Sie für ein Abo konfigurieren können:
Umgang mit Nachrichtenfehlern mit der Abowiederholrichtlinie
Nicht zustellbare Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Bisher bestätigte Nachrichten wiedergeben oder Nachrichten löschen