Best Practices für das Abonnieren eines Pub/Sub-Themas

Beim Abonnieren empfängt ein Abonnentenclient Nachrichten von einem Pub/Sub-Thema. Im Folgenden finden Sie 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 die Kurzanleitungen, um zu erfahren, wie Sie Pub/Sub über die Console, die gcloud CLI oder die Clientbibliotheken ausführen.

Das richtige Abo auswählen

Pub/Sub bietet Standardabos wie Push- und Pull-Abos. Zusätzlich zu den Standardabos bietet Pub/Sub auch Exportabos, mit denen Sie Nachrichten direkt in einer Google Cloud-Ressource speichern können, 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:

  • Sie dürfen in Ihrer Aboanwendung keinen Code einfügen, der die Clientbibliothek als Abhängigkeit importiert.

  • Der Abonnentenclient kann keine ausgehenden Anfragen senden.

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

Im Allgemeinen empfehlen wir die Verwendung der Clientbibliothek der höheren Ebene. Wenn Sie stattdessen unary pull verwenden, setzen Sie returnImmediately nicht auf true. Wenn Sie den Wert auf true festlegen, wirkt sich das negativ auf die Pull-Leistung aus. Das Feld returnImmediately wird nicht mehr unterstützt.

Nachrichten verarbeiten, bevor sie bestätigt werden

Standardmäßig verwirft Pub/Sub eine Nachricht aus einem Abo, nachdem sie bestätigt wurde. Wenn Sie eine Nachricht nicht verarbeiten, bevor Sie eine Bestätigung senden, und die Verarbeitung fehlschlägt, wird die Nachricht vom Dienst nicht noch einmal gesendet. Eine Ausnahme liegt vor, wenn Sie die Aufbewahrung bestätigter Nachrichten oder die Themenaufbewahrung konfiguriert haben und einen Suchvorgang ausführen.

Wenn du Abonnenten mit hoher Latenz hast, musst du möglicherweise benutzerdefinierte Werte für die Datenflusssteuerung und die Verwaltung von Leases festlegen.

Ablaufsteuerung für Abonnenten für vorübergehende Traffic-Spitzen konfigurieren

Mit der Ablaufsteuerung auf Abonnentenseite kannst du verhindern, dass Abonnenten durch Trafficspitzen überlastet werden. So haben die Autoscaling-Mechanismen Zeit, auf eine erhöhte Auslastung zu reagieren, oder die Verarbeitung der Auslastung kann über einen längeren Zeitraum verteilt werden. Bei der ersten Methode wird die Latenz gesenkt, bei der zweiten die Kosten.

Wenn Sie die Ablaufsteuerung konfigurieren möchten, müssen Sie geeignete 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.

  • Mit Maximale ausstehende Nachrichten wird die maximale Anzahl von Nachrichten definiert, die an den Client gesendet wurden und für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.

  • Ausstehende Nachrichten-Byte insgesamt gibt die maximale Gesamtgröße der an den Client gesendeten Nachrichten an, für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.

Wenn das Limit für eine dieser Optionen überschritten wird, ruft der Abonnentenclient keine weiteren Nachrichten ab. Dieses Verhalten dauert so lange an, bis die bereits abgerufenen Nachrichten bestätigt oder negativ bestätigt wurden. So können Sie den Durchsatz gegen die Kosten abwägen, die mit mehr Abonnenten verbunden sind.

Best Practices für die geordnete Übermittlung von Nachrichten bei der Anmeldung

Wenn Sie die Nachrichtensortierung verwenden, beachten Sie Folgendes:

  • Wähle entweder StreamingPull- oder Pull-Abos aus. Bei einem Push-Abo unterstützt Pub/Sub jeweils nur eine ausstehende Nachricht pro Reihenfolgeschlüssel. Das Senden paralleler Push-Anfragen in einem solchen Szenario würde dem Senden mehrerer Nachrichtenpakete für denselben Reihenfolgeschlüssel ähneln, um Abonnenten gleichzeitig abzurufen. Push-Abos sind daher nicht für Themen zu empfehlen, bei denen häufig mehrere Nachrichten mit demselben Sortierungsschlüssel veröffentlicht werden oder bei denen die Latenz extrem wichtig ist.

  • Aktivieren Sie die Nachrichtenreihenfolge im Abo. Wenn Sie auf Publisherseite Nachrichten mit einem Reihenfolgeschlüssel und in derselben Region senden, können Sie die Abonnenten so konfigurieren, dass sie diese Nachrichten in der richtigen Reihenfolge erhalten. Aktiviere das Attribut für die Nachrichtenreihenfolge auf Abonnentenseite nur für die Abos, für die du Nachrichten in der richtigen Reihenfolge erhalten möchtest. Je nach Status der Property kann jedes an das Thema angehängte Abo festlegen, ob eine geordnete Zustellung erforderlich ist, ohne sich gegenseitig zu beeinflussen.

  • Bestätigen Sie die Nachrichten in der richtigen Reihenfolge. Bei der geordneten Zustellung werden Bestätigungen für spätere Nachrichten erst verarbeitet, wenn die Bestätigungen für frühere Nachrichten gemäß dem Sortierschlüssel verarbeitet wurden. Wenn Sie beispielsweise Nachrichten 1, 2 und 3 mit demselben Sortierschlüssel haben, sie alle erhalten und nur Nachricht 3 bestätigen, wird Nachricht 3 vom Dienst erst als bestätigt betrachtet, wenn auch Nachrichten 1 und 2 bestätigt wurden. Wenn die Bestätigungen für Nachrichten 1 und 2 nie empfangen werden, werden Nachrichten 1, 2 und 3 noch einmal zugestellt.

Zusammenfassung der Best Practices

In der folgenden Tabelle sind die Best Practices zusammengefasst, die in diesem Dokument empfohlen werden:

Thema Aufgabe
Abotyp auswählen Wählen Sie den richtigen Abotyp für Ihre Geschäftsanforderungen aus. Wenn von Ihrem Abo unterstützt, verwenden Sie auch die allgemeine Clientbibliothek.
Bestätigte Nachricht wiedergeben Nachrichten verarbeiten, bevor Sie sie bestätigen Sie können auch einen Suchvorgang konfigurieren, damit bestätigte Nachrichten nicht verloren gehen.
Ablaufsteuerung Konfiguriere die Ablaufsteuerung in den Aboeinstellungen, damit Abonnenten nicht überlastet werden, bis das Autoscaling aktiviert wird oder die Zeit vergeht.
Nachrichten in eine Reihenfolge bringen Wenn Sie die Nachrichtensortierung verwenden, wählen Sie „StreamingPull“ oder „Pull“ aus, aktivieren Sie die Nachrichtensortierung im Abo und bestätigen Sie die Nachrichten der Reihe nach.

Nächste Schritte