Best Practices zum Abonnieren eines Pub/Sub-Themas

Bei einem Abo empfängt ein Abonnentenclient Nachrichten von einem Pub/Sub-Thema. Hier sind einige Best Practices für das Abonnieren von Pub/Sub.

In diesem Dokument wird davon ausgegangen, dass Sie bereits mit dem Abonnieren eines Pub/Sub-Themas und dem Empfangen von Nachrichten in Ihrem Abonnentenclient vertraut sind.

Wenn Sie Pub/Sub noch nicht kennen, lesen Sie eine der Kurzanleitungen und erfahren Sie, wie Sie Pub/Sub mit der Console, der gcloud CLI oder den Clientbibliotheken ausführen.

Das passende Abo auswählen

Pub/Sub bietet Standardabos wie push- und push-Abos. Zusätzlich zu den Standardabos bietet Pub/Sub auch Exportabos. Damit können Sie Nachrichten direkt in einer Google Cloud-Ressource speichern, ohne dass Dataflow als Vermittler erforderlich ist. BigQuery-Abos speichern Nachrichten beispielsweise in einer BigQuery-Tabelle.

Push-Abos werden für die folgenden Szenarien empfohlen:

  • Du kannst keinen Code in deine Abonnentenanwendung aufnehmen, der die Clientbibliothek als Abhängigkeit importiert.

  • Der Abonnentenclient kann keine ausgehenden Anfragen senden.

  • Sie möchten dieselbe Instanz verwenden, um Nachrichten aus verschiedenen Themen und Abos zu verarbeiten, bei denen der Abonnentenclient die Liste der Abos nicht kennt.

Für allgemeine Fälle empfehlen wir die Verwendung der allgemeinen Clientbibliothek. Wenn Sie stattdessen unären Pull verwenden, legen Sie returnImmediately nicht auf true fest. Wenn Sie ihn auf true festlegen, wirkt sich dies negativ auf die Pull-Leistung aus. Das Feld returnImmediately wurde eingestellt.

Nachrichten vor der Bestätigung verarbeiten

Standardmäßig verwirft Pub/Sub eine Nachricht eines Abos, nachdem sie bestätigt wurde. Wenn Sie eine Nachricht vor dem Senden einer Bestätigung nicht verarbeiten und die Verarbeitung fehlschlägt, sendet der Dienst die Nachricht nicht noch einmal. Eine Ausnahme ist, wenn Sie die Aufbewahrung bestätigter Nachrichten oder die Aufbewahrung von Themen konfiguriert haben und eine Suche ausführen.

Wenn Sie Abonnenten mit hoher Latenz haben, müssen Sie möglicherweise benutzerdefinierte Werte für die Ablaufsteuerung und die Lease-Verwaltung festlegen.

Abonnentenfluss-Steuerung für vorübergehende Traffic-Spitzen konfigurieren

Mit der Ablaufsteuerung auf Abonnentenseite kannst du verhindern, dass Abonnenten durch Zugriffsspitzen überlastet werden. So kann es einige Zeit dauern, bis die Autoscaling-Mechanismen auf eine erhöhte Last reagieren, oder die Verarbeitung der Last über einen längeren Zeitraum verteilen. Die erste Methode spart Latenz, die zweite Methode Kosten.

Zum Konfigurieren der Ablaufsteuerung müssen Sie entsprechende Werte für maximum outstanding messages und total outstanding message bytes festlegen. Die Standardwerte für diese Ablaufsteuerungsvariablen und die Namen der Variablen können sich je nach Clientbibliothek unterscheiden.

  • Maximal ausstehende Nachrichten definiert die maximale Anzahl der Nachrichten, die an den Client gesendet werden, für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.

  • Total ausstehende Nachrichtenbyte definiert die maximale Gesamtgröße der Nachrichten, die an den Client zugestellt werden und für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.

Wird das Limit für eine dieser Optionen überschritten, 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 Sie den Durchsatz den Kosten gegenüberstellen, die mit der Ausführung von mehr Abonnenten verbunden sind.

Best Practices für geordnete Mitteilungen bei Abos

Achten Sie bei der Nachrichtensortierung auf Folgendes:

  • Wählen Sie entweder StreamingPull- oder Pull-Abos aus. Bei einem Push-Abo unterstützt Pub/Sub jeweils nur eine ausstehende Nachricht für jeden Reihenfolgeschlüssel. Das Senden von parallelen Push-Anfragen in einem solchen Szenario ähnelt dem Senden mehrerer Batches von Nachrichten für denselben Reihenfolgeschlüssel, um Abonnenten gleichzeitig abzurufen. Daher werden Push-Abos nicht für Themen empfohlen, bei denen mehrere Nachrichten häufig mit demselben Reihenfolgeschlüssel veröffentlicht werden oder bei denen die Latenz extrem wichtig ist.

  • Nachrichtenreihenfolge im Abo aktivieren Wenn Sie aufseiten des Publishers Nachrichten mit einem Reihenfolgeschlüssel senden und sich in derselben Region befinden, können Sie die Abonnenten so konfigurieren, dass sie diese Nachrichten der Reihe nach empfangen. Aktiviere auf Abonnentenseite das Attribut für die Nachrichtenreihenfolge nur für die Abos, für die du Nachrichten in einer bestimmten Reihenfolge erhalten möchtest. Abhängig vom Attributstatus kann jedes mit dem Thema verknüpfte Abo feststellen, ob eine geordnete Zustellung erforderlich ist, ohne sich gegenseitig zu beeinträchtigen.

  • Nachrichten der Reihe nach bestätigen: Bei Verwendung der geordneten Zustellung werden Bestätigungen für spätere Nachrichten erst verarbeitet, wenn Bestätigungen für frühere Nachrichten pro Reihenfolgeschlüssel verarbeitet werden. Wenn beispielsweise die Nachrichten 1, 2 und 3 den gleichen Reihenfolgeschlüssel haben und Sie alle erhalten und nur Nachricht 3 bestätigen, betrachtet der Dienst Nachricht 3 erst dann als bestätigt, wenn auch die Nachrichten 1 und 2 bestätigt wurden. Wenn die Bestätigungen für die Nachrichten 1 und 2 nie empfangen werden, werden die Nachrichten 1, 2 und 3 alle noch einmal zugestellt.

Zusammenfassung der Best Practices

In der folgenden Tabelle sind die in diesem Dokument empfohlenen Best Practices zusammengefasst:

Thema Aufgabe
Abotyp auswählen Wählen Sie das passende Abo für Ihre geschäftlichen Anforderungen aus. Verwende außerdem die allgemeine Clientbibliothek, sofern dies von deinem Abo unterstützt wird.
Bestätigte Nachricht noch einmal abspielen Nachricht verarbeiten, bevor Sie sie bestätigen Alternativ können Sie die Konfiguration für einen Suchvorgang konfigurieren, damit keine bestätigten Nachrichten verloren gehen.
Ablaufsteuerung Konfiguriere die Ablaufsteuerung in den Abonnenteneinstellungen, damit Abonnenten nicht überlastet werden, bis Autoscaling aktiviert wird oder Zeit verstrichen ist.
Nachrichten in eine Reihenfolge bringen Wenn Sie eine sortierte Nachrichtenfunktion verwenden, wählen Sie StreamingPull oder Pull aus, aktivieren Sie die Nachrichtenreihenfolge im Abo und bestätigen Sie Nachrichten der Reihe nach.

Nächste Schritte