Datenpipelines erhalten manchmal Spitzen im veröffentlichten Traffic. Traffic-Spitzen können Abonnenten überfordern, wenn du nicht darauf vorbereitet bist. Eine einfache Lösung zur Vermeidung von Trafficspitzen 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. Sie benötigen beispielsweise viele VMs.
Mit der Ablaufsteuerung auf Abonnentenseite kann der Abonnent die Geschwindigkeit steuern, mit der Nachrichten aufgenommen werden. Die Ablaufsteuerung bewältigt somit Trafficspitzen, ohne dass Kosten in die Höhe getrieben werden oder bis der Abonnent hochskaliert wird.
Die Ablaufsteuerung ist ein verfügbares Feature in der allgemeinen Pub/Sub-Clientbibliothek. Wenn Sie eine untergeordnete Clientbibliothek verwenden, können Sie auch Ihre eigene Programmierung für die Ablaufsteuerung implementieren.
Die Notwendigkeit der Ablaufsteuerung weist darauf hin, dass Nachrichten mit einer höheren Rate veröffentlicht werden, als sie verarbeitet werden. Wenn dieses Szenario ein dauerhafter Status und kein vorübergehender Anstieg des Nachrichtenvolumens ist, solltest du die Anzahl der Abonnenten-Clientinstanzen erhöhen.
Konfiguration der Ablaufsteuerung
Mit der Ablaufsteuerung können Sie die maximale Anzahl von Byte, die für ausstehende Anfragen zugewiesen sind, und die maximale Anzahl zulässiger ausstehender Nachrichten konfigurieren. 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 konfigurieren die folgenden Variablen beispielsweise 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 bleibt bestehen, bis die bereits abgerufenen Nachrichten bestätigt oder negativ bestätigt werden.
Auf diese Weise können wir den Durchsatz an die Kosten anpassen, die mit der Ausführung von mehr Abonnenten verbunden sind.
Codebeispiele für Ablaufsteuerung
Verwende 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 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 zur Pub/Sub C# API.
Einfach loslegen (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 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 PHP 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 PHP 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
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 Zustellungsoptionen, die Sie für ein Abo konfigurieren können:
Nachrichtenfehler mit der Richtlinie für Abowiederholungen behandeln
Nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Zuvor bestätigte Nachrichten noch einmal abspielen oder Nachrichten dauerhaft löschen