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 über die Konsole, die Google Cloud 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 einerTrusted Cloud by S3NS -Ressource speichern können, ohne dass Dataflow als Vermittler erforderlich ist. Bei BigQuery-Abos werden Nachrichten beispielsweise in einer BigQuery-Tabelle gespeichert.
Push-Abos werden für die folgenden Szenarien empfohlen:
Sie dürfen in Ihrer Abonnentenanwendung keinen Code einfügen, der die Clientbibliothek als Abhängigkeit importiert.
Der Abonnentenclient kann keine ausgehenden Anfragen stellen.
Sie möchten dieselbe Instanz verwenden, um Nachrichten aus verschiedenen Themen und Abos zu verarbeiten, wobei der Abonnentenclient die Liste der Abos nicht kennt.
Für allgemeine Anwendungsfälle empfehlen wir die Verwendung der Clientbibliothek auf hoher Ebene. Wenn Sie stattdessen Unary Pull verwenden, legen Sie returnImmediately
nicht auf true
fest. Wenn Sie den Wert auf true
setzen, wirkt sich das negativ auf die Pull-Leistung aus.
Das Feld returnImmediately
wird nicht mehr unterstützt.
Wenn Sie alle Abotypen vergleichen und den für Ihre geschäftlichen Anforderungen am besten geeigneten auswählen möchten, sehen Sie sich die Vergleichstabelle für Pub/Sub-Abos an.
Informationen zu den Vorteilen eines Exportabos finden Sie unter Wann sollte ein Exportabo verwendet werden?.
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 quittierter Nachrichten oder die Themenaufbewahrung konfiguriert haben und einen Suchvorgang ausführen.
Wenn Sie Abonnenten mit hoher Latenz haben, müssen Sie möglicherweise benutzerdefinierte Werte für die Flusssteuerung und die Lease-Verwaltung festlegen.
Ablaufsteuerung für Abonnenten für vorübergehende Trafficspitzen konfigurieren
Mit der Ablaufsteuerung auf Abonnentenseite können Sie verhindern, dass Abonnenten durch Trafficspitzen überlastet werden. So kann Zeit für Autoscaling-Mechanismen geschaffen werden, um auf eine erhöhte Last zu reagieren, oder die Verarbeitung der Last kann über einen längeren Zeitraum verteilt werden. Die erste Methode spart Latenz, die zweite Kosten.
Wenn Sie die Ablaufsteuerung konfigurieren möchten, 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.
Maximale Anzahl ausstehender Nachrichten definiert die maximale Anzahl von Nachrichten, die an den Client gesendet wurden und für die Pub/Sub keine Bestätigungen oder negativen Bestätigungen erhalten hat.
Total outstanding message bytes (Gesamtanzahl ausstehender Nachrichtenbytes) gibt die maximale Gesamtgröße der Nachrichten an, die an den Client gesendet wurden und 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 wird fortgesetzt, bis die bereits abgerufenen Nachrichten bestätigt oder negativ bestätigt werden. So können Sie den Durchsatz gegen die Kosten für die Ausführung von mehr Abonnenten abwägen.
Doppelte Übermittlungen verarbeiten
Standardmäßig stellt Pub/Sub Nachrichten mindestens einmal an Abonnenten zu. Das bedeutet, dass Nachrichten mehrmals zugestellt werden können, auch wenn sie bestätigt wurden. In den folgenden Abschnitten wird erläutert, wie Sie auf häufige Szenarien für die erneute Zustellung reagieren können.
Viele Nachrichten werden immer wieder zugestellt
Wenn viele Nachrichten immer wieder zugestellt werden, sind Ihre Abonnenten überlastet oder sie bestätigen die Nachrichten nicht, bevor die Frist abläuft.
Wenn Sie ein Pull-Abo verwenden, müssen Sie möglicherweise benutzerdefinierte Werte für Ablaufsteuerung festlegen oder die Zeiträume für die Verlängerung des Leases über die Leaseverwaltung verlängern.
Wenn Sie Push-Abos verwenden, müssen Sie möglicherweise die Einstellung für die Bestätigungsfrist verlängern. Du kannst auch Best Practices für die Aufrechterhaltung eines gesunden Abos befolgen.
Gelegentliche erneute Zustellung von Nachrichten
Wenn Nachrichten noch einmal zugestellt werden, bevor die Bestätigungsfrist abgelaufen ist oder nachdem die Nachrichten innerhalb weniger Sekunden bestätigt wurden, verhält sich Pub/Sub wie erwartet. Diese Spitzen bei der erneuten Zustellung sollten nicht häufig auftreten. Wenn sie jedoch auftreten, betreffen sie wahrscheinlich mehrere Nachrichten gleichzeitig. Ihr System muss so konzipiert sein, dass es diese gelegentlichen Duplikate tolerieren kann.
Wiederholte Zustellung einiger Nachrichten
Wenn Sie feststellen, dass eine kleine Anzahl von Nachrichten mehrmals zugestellt wird, sollten Sie zuerst prüfen, ob Sie sie bestätigen. Wenn das nicht der Fall ist, müssen Sie herausfinden, warum Ihr Abonnent die Nachrichten nicht richtig verarbeitet. Sie sollten ein Thema für unzustellbare Nachrichten konfigurieren, um weitere Zustellversuche zu verhindern. Wenn Sie die Nachricht bestätigen, funktioniert Pub/Sub möglicherweise weiterhin wie erwartet. Es ist zwar sehr selten, aber es kann vorkommen, dass eine kleine Anzahl von Nachrichten mehrmals zugestellt wird, wenn es interne Netzwerk- oder Hardwarestörungen gibt. Der Dienst versucht in diesen Fällen, sich selbst zu reparieren. Es kann jedoch einige Minuten dauern, bis die Maßnahmen aktiviert werden.
Ihr System muss erneute Zustellungen tolerieren. Sie können die Wahrscheinlichkeit verringern, indem Sie Nachrichten so schnell wie möglich verarbeiten und bestätigen.
Wenn Ihre Anwendung keine Duplikate tolerieren kann, können Sie die genau einmal zugestellte Übermittlung aktivieren. Diese Funktion ist nur für Pull-Abos verfügbar und führt zu einer höheren Latenz zwischen Veröffentlichung und Abo. Bevor Sie diese Funktion aktivieren, sollten Sie prüfen, ob die höhere Latenz für Ihren Anwendungsfall akzeptabel ist.
Best Practices für die geordnete Nachrichtenübermittlung beim Abonnieren
Wenn Sie die Nachrichtenreihenfolge verwenden, achten Sie 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 paralleler Push-Anfragen in einem solchen Szenario wäre vergleichbar mit dem Senden mehrerer Batches von Nachrichten für denselben Reihenfolgeschlüssel, 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.
Nachrichtenreihenfolge im Abo aktivieren Wenn Sie als Publisher Nachrichten mit einem Reihenfolgeschlüssel in derselben Region senden, können Sie die Abonnenten so konfigurieren, dass sie diese Nachrichten in der richtigen Reihenfolge empfangen. Abonnenten müssen das Attribut für die Nachrichtenreihenfolge nur für die Abos aktivieren, für die sie geordnete Nachrichten erhalten möchten. Abhängig vom Attributstatus kann für jedes Abo, das dem Thema zugeordnet ist, festgelegt werden, ob eine geordnete Zustellung erforderlich ist, ohne dass sich die Abos gegenseitig beeinträchtigen.
Nachrichten in der richtigen Reihenfolge bestätigen: Bei der Verwendung der geordneten Zustellung werden Bestätigungen für spätere Nachrichten erst verarbeitet, wenn Bestätigungen für frühere Nachrichten pro Ordnungsschlüssel verarbeitet wurden. Wenn Sie beispielsweise die Nachrichten 1, 2 und 3 mit demselben Sortierschlüssel erhalten und nur Nachricht 3 bestätigen, wird Nachricht 3 vom Dienst erst als bestätigt betrachtet, wenn auch die Nachrichten 1 und 2 bestätigt wurden. Wenn die Bestätigungen für die Nachrichten 1 und 2 nie eingehen, werden die Nachrichten 1, 2 und 3 noch einmal gesendet.
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 Unternehmensanforderungen aus. Verwenden Sie, sofern von Ihrem Abo unterstützt, auch die allgemeine Clientbibliothek. |
Bestätigte Nachrichten wiedergeben | Verarbeiten Sie eine Nachricht, bevor Sie sie bestätigen. Oder Sie konfigurieren die Suche so, dass keine bestätigten Nachrichten verloren gehen. |
Ablaufsteuerung | Konfigurieren Sie die Ablaufsteuerung in den Abonnenteneinstellungen, damit Abonnenten nicht überlastet werden, bis das Autoscaling einsetzt oder Zeit vergeht. |
Nachrichten in eine Reihenfolge bringen | Wenn Sie die geordnete Nachrichtenübermittlung verwenden, wählen Sie „StreamingPull“ oder „Pull“ aus, aktivieren Sie die Nachrichtenreihenfolge im Abo und bestätigen Sie Nachrichten in der richtigen Reihenfolge. |
Nächste Schritte
Best Practices für die Veröffentlichung von Inhalten zu einem Pub/Sub-Thema
Best Practices für die Verwendung von Pub/Sub-Messwerten als Skalierungssignal