Bei Datenpipelines kann es manchmal zu Spitzen im veröffentlichten Traffic kommen. Diese Trafficspitzen können Abonnenten überfordern, wenn Sie nicht darauf vorbereitet sind. Eine einfache Lösung, um Trafficspitzen zu vermeiden, besteht darin, die Pub/Sub-Abonnentenressourcen dynamisch zu erhöhen, um mehr Nachrichten zu verarbeiten. Diese Lösung kann jedoch die Kosten in die Höhe treiben oder nicht sofort funktionieren. Möglicherweise benötigen Sie beispielsweise viele VMs.
Mit der Ablaufsteuerung auf Abonnentenseite kann der Abonnent die Rate steuern, mit der Nachrichten aufgenommen werden. Die Ablaufsteuerung bewältigt so Trafficspitzen ohne Kostensteigerung oder bis zur Skalierung des Abonnenten.
Die Ablaufsteuerung ist eine verfügbare Funktion in der Pub/Sub Clientbibliothek auf hoher Ebene. Sie können auch Ihre eigene Ablaufsteuerung programmieren, wenn Sie eine Clientbibliothek auf niedriger Ebene verwenden.
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.
Ablaufsteuerung konfigurieren
Mit der Ablaufsteuerung können Sie die maximale Anzahl der 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 zwischen den Clientbibliotheken unterscheiden. In der Java-Clientbibliothek konfigurieren beispielsweise die folgenden Variablen die Ablaufsteuerung:
setMaxOutstandingElementCount(). Definiert die maximale Anzahl von Nachrichten, 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 wird fortgesetzt, bis die bereits abgerufenen Nachrichten bestätigt oder negativ bestätigt werden.
So können wir den Durchsatz an die Kosten anpassen, die mit der Ausführung weiterer Abonnenten verbunden sind.
Codebeispiele für die Ablaufsteuerung
Verwenden Sie die Ablaufsteuerungsfunktionen des Abonnenten, um die Rate zu 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 Pub/Sub C++ API-Referenzdokumentation.
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 zur Pub/Sub C# API.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (Version 2) verwendet. Wenn Sie noch die Version 1 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Veraltete Codebeispiele.
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 zur 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 zur Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur 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 zur Pub/Sub Python API.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek Version 3 verwendet. Wenn Sie noch die Version 2 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 3. Eine Liste der Codebeispiele für Ruby Version 2 finden Sie unter Veraltete Codebeispiele.
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 zur Pub/Sub Ruby API.
Nächste Schritte
Weitere Informationen zu den anderen Zustelloptionen, die Sie für ein Abo konfigurieren können:
Umgang mit Nachrichtenfehlern mit der Wiederholungsrichtlinie für Abos
Nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Zuvor bestätigte Nachrichten wiedergeben oder Nachrichten löschen