Die Funktion zur Steuerung der Parallelität ist in der Pub/Sub-Clientbibliothek auf hoher Ebene verfügbar. Wenn Sie eine Low-Level-Bibliothek verwenden, können Sie auch Ihre eigene Parallelitätssteuerung implementieren.
Die Unterstützung für die Steuerung der Gleichzeitigkeit 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 Sie die Funktion für Ihre Abonnentenclients einrichten. Informationen zum Konfigurieren Ihrer Publisher-Clients für die Gleichzeitigkeitssteuerung finden Sie unter Gleichzeitigkeitssteuerung.
Konfigurationen für die Gleichzeitigkeitserkennung
Die Standardwerte für die Variablen zur Steuerung der Parallelität 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 die Methoden zum Konfigurieren der Parallelitätssteuerung beispielsweise setParallelPullCount()
, setExecutorProvider()
, setSystemExecutorProvider()
und setChannelProvider()
.
Mit setParallelPullCount() können Sie festlegen, wie viele Streams geöffnet werden sollen. Sie können weitere Streams öffnen, wenn Ihr Abonnentenclient mehr Daten verarbeiten kann als die 10 MBps, die über einen einzelnen Stream gesendet werden.
Mit setExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Verarbeitung von Nachrichten verwendet wird. Sie können beispielsweise den Executor-Anbieter in einen ändern, der einen einzelnen, gemeinsam genutzten Executor mit einer begrenzten Anzahl von Threads für mehrere Abonnentenclients zurückgibt. Diese Konfiguration trägt dazu bei, die Anzahl der erstellten Threads zu begrenzen. Die Gesamtzahl der Threads, die für die Parallelitätssteuerung verwendet werden, hängt vom Executor-Anbieter ab, der in der Clientbibliothek übergeben wird, und von der Anzahl der parallelen Pull-Vorgänge.
Mit setSystemExecutorProvider() können Sie den Executor-Anbieter anpassen, der für die Lease-Verwaltung verwendet wird. Normalerweise konfigurieren Sie diesen Wert nur, wenn Sie denselben Executor-Anbieter in
setExecutorProvider
undsetSystemExecutorProvider
verwenden möchten. Sie können beispielsweise denselben Executor-Anbieter verwenden, wenn Sie eine Reihe von Abos mit geringem Durchsatz haben. Wenn Sie denselben Wert verwenden, wird die Anzahl der Threads im Client begrenzt.Mit setChannelProvider() können Sie den Channel-Anbieter anpassen, der zum Öffnen von Verbindungen zu Pub/Sub verwendet wird. Normalerweise konfigurieren Sie diesen Wert nicht, es sei denn, Sie möchten denselben Channel für mehrere Abonnentenclients verwenden. Wenn ein Channel für zu viele Clients wiederverwendet wird, kann dies zu
GOAWAY
- oderENHANCE_YOUR_CALM
-Fehlern führen. Wenn diese Fehler in den Logs Ihrer Anwendung oder in Cloud Logs angezeigt werden, erstellen Sie weitere Channels.
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
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte 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 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
Im folgenden Beispiel wird die Ruby-Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, finden Sie hier die Migrationsanleitung für v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby im Schnellstart: 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:
Nachrichtenfehler mit der Richtlinie für Abo-Wiederholungsversuche behandeln
Nicht zugestellte Nachrichten an ein Thema für unzustellbare Nachrichten weiterleiten
Zuvor bestätigte Nachrichten wiedergeben oder Nachrichten löschen