Die Parallelitätssteuerung ist eine Funktion der Pub/Sub-Clientbibliothek. Sie können auch Ihre eigene Parallelitätssteuerung implementieren, wenn Sie eine Low-Level-Bibliothek verwenden.
Die Unterstützung für die Parallelitätssteuerung hängt von der Programmiersprache der Clientbibliothek ab. Bei Sprachimplementierungen, die parallele Threads wie C++, Go und Java unterstützen, legen die Clientbibliotheken die Anzahl der Threads jeweils anhand ihrer Standardeinstellung fest.
Diese Einstellung ist für Ihre Anwendung möglicherweise nicht optimal. Wenn Ihre Abonnentenanwendung beispielsweise nicht mit dem eingehenden Nachrichtenvolumen mithält und nicht CPU-gebunden ist, müssen Sie die Anzahl der Threads erhöhen. Bei CPU-intensiver Nachrichtenverarbeitung kann es sinnvoll sein, die Anzahl der Threads zu verringern.
Auf dieser Seite wird das Konzept der Parallelitätssteuerung erläutert und beschrieben, wie du die Funktion für deine Abonnenten-Clients einrichtest. Informationen zum Konfigurieren deiner Publisher-Clients für die Gleichzeitigkeitssteuerung findest du unter Gleichzeitigkeitssteuerung.
Konfigurationen für die Parallelitätssteuerung
Die Standardwerte für die Variablen zur Parallelitätssteuerung und die Namen der Variablen können sich je nach Clientbibliothek unterscheiden. Weitere Informationen finden Sie in der API-Referenzdokumentation.
In der Java-Clientbibliothek sind das beispielsweise die Methoden setParallelPullCount()
, setExecutorProvider()
, setSystemExecutorProvider()
und setChannelProvider()
.
Mit setParallelPullCount() kannst du festlegen, wie viele Streams geöffnet werden sollen. Du kannst weitere Streams öffnen, wenn dein Abo-Client mehr Daten verarbeiten kann als über einen einzelnen Stream gesendet werden, also 10 MB/s.
Mit setExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Verarbeitung von Nachrichten verwendet wird. Du kannst den Executor-Anbieter beispielsweise in einen ändern, der einen einzelnen, freigegebenen Executor mit einer begrenzten Anzahl von Threads für mehrere Abonnenten-Clients zurückgibt. Mit dieser Konfiguration lässt sich die Anzahl der erstellten Threads begrenzen. Die Gesamtzahl der Threads, die für die Parallelität verwendet werden, hängt vom in der Clientbibliothek übergebenen Executor-Anbieter und der Anzahl der parallelen Pull-Vorgänge ab.
Mit setSystemExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Freigabeverwaltung verwendet wird. Normalerweise konfigurieren Sie diesen Wert nur, wenn Sie in
setExecutorProvider
undsetSystemExecutorProvider
denselben Executor-Anbieter verwenden möchten. Sie können beispielsweise denselben Ausführenden verwenden, wenn Sie mehrere Abos mit geringem Durchsatz haben. Wenn Sie denselben Wert verwenden, wird die Anzahl der Threads im Client begrenzt.Mit setChannelProvider() können Sie den Channelanbieter anpassen, der zum Öffnen von Verbindungen zu Pub/Sub verwendet wird. Normalerweise konfigurierst du diesen Wert nur, wenn du denselben Kanal für mehrere Abonnenten-Clients verwenden möchtest. Wenn ein Kanal für zu viele Kunden wiederverwendet wird, kann das zu
GOAWAY
- oderENHANCE_YOUR_CALM
-Fehlern führen. Wenn Sie diese Fehler in den Logs Ihrer Anwendung oder in Cloud Logs sehen, erstellen Sie weitere Kanäle.
Codebeispiele für die Parallelitätssteuerung
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.
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.
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:
Vorübergehende Spitzen mithilfe der Ablaufsteuerung bewältigen
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