Was ist Pub/Sub?

Pub/Sub ist ein asynchroner Messaging-Dienst, der Dienste entkoppelt, die Ereignisse von Diensten erzeugen, die Ereignisse verarbeiten.

Sie können Pub/Sub als Messaging-orientierte Middleware oder Ereignisaufnahme und -lieferung für Streaminganalyse-Pipelines verwenden.

Pub/Sub bietet dauerhafte Nachrichtenspeicherung und Echtzeit-Nachrichtenzustellung mit hoher Verfügbarkeit und konsistenter Leistung mit großer Skalierbarkeit. Pub/Sub-Server werden weltweit in allen Google Cloud-Regionen ausgeführt.

Probieren Sie die Kurzanleitung zur Verwendung der Cloud Console aus, um sofort loszulegen. Eine umfassendere Einführung finden Sie unter Funktionsfähiges Pub/Sub-System erstellen.

Wichtige Konzepte

  • Thema: Eine benannte Ressource, an die Nachrichten von Publishern gesendet werden.
  • Abo: Eine benannte Ressource, die für den Nachrichtenfluss von einem einzelnen bestimmten Thema steht, der für die abonnierende Anwendung bereitgestellt werden soll. Weitere Informationen zu Abos und zur Semantik der Nachrichtenzustellung finden Sie im Abonnentenleitfaden.
  • Nachricht: Die Kombination von Daten und (optionalen) Attributen, die ein Publisher an ein Thema sendet und die schließlich für Abonnenten bereitgestellt wird.
  • Nachrichtenattribut: Ein Schlüssel/Wert-Paar, das ein Publisher für eine Nachricht definieren kann. Beispielsweise könnten der Schlüssel iana.org/language_tag und der Wert en zu Nachrichten hinzugefügt werden, um sie für einen englischsprachigen Abonnenten als lesbar zu markieren.

Publisher-Abonnenten-Beziehungen

Eine Publisher-Anwendung erstellt und sendet Nachrichten an ein Thema. Abonnentenanwendungen erstellen ein Abo eines Themas, um Nachrichten von ihm zu erhalten. Kommunikation kann 1:n ("Fan-Out"), n:1 ("Fan-In") und n:n stattfinden.

Pub/Sub-Nachrichtenfluss

Im Folgenden finden Sie eine Übersicht der Komponenten im Pub/Sub-System und des Nachrichtenflusses zwischen ihnen:

  1. Mit einer Publisher-Anwendung werden Themen in Pub/Sub erstellt und Nachrichten an diese Themen gesendet. Eine Nachricht enthält eine Nutzlast und optionale Attribute zur Beschreibung des Nutzlastinhalts.
  2. Der Dienst gewährleistet, dass veröffentlichte Nachrichten für Abos gespeichert werden. Eine veröffentlichte Nachricht wird für ein Abo gespeichert, bis sie von einem Abonnenten, der Nachrichten aus diesem Abo nutzt, bestätigt wird.
  3. Pub/Sub leitet Nachrichten von einem Thema einzeln an alle zugehörigen Abos weiter.
  4. Die einzelnen Abonennten erhalten Nachrichten entweder dadurch, dass Pub/Sub sie an den gewählten Endpunkt des Abonnenten weiterleitet ("Push"), oder dadurch, dass der Abonnent sie vom Dienst abruft ("Pull").
  5. Der Abonnent sendet für jede empfangene Nachricht eine Bestätigung an den Pub/Sub-Dienst.
  6. Der Dienst entfernt bestätigte Nachrichten aus der Nachrichtenwarteschlange des Abos.

Publisher- und Abonnent-Endpunkte

Publisher können alle Anwendungen sein, die HTTPS-Anfragen an pubsub.googleapis.com stellen können: eine App Engine-Anwendung, einen in Google Compute Engine oder einem anderen Drittanbieter-Netzwerk gehosteten Webdienst, eine auf einem Desktop- oder Mobilgerät installierte Anwendung oder sogar ein Browser.

Pull-Abonnenten können außerdem alle Anwendungen sein, die HTTPS-Anfragen an pubsub.googleapis.com stellen können.

Push-Abonnenten müssen Webhook-Endpunkte sein, die POST-Anfragen über HTTPS akzeptieren.

Gängige Anwendungsfälle

  • Workloads in Netzwerkclustern ausgleichen. Zum Beispiel kann eine lange Warteschlange von Aufgaben effizient auf mehrere Worker verteilt werden, etwa Google Compute Engine-Instanzen.
  • Asynchrone Workflows implementieren. Zum Beispiel kann eine Auftragsverarbeitungsanwendung einen Auftrag in ein Thema einfügen, der von dort aus durch einen oder mehrere Worker verarbeitet wird.
  • Ereignisbenachrichtigungen verteilen. Zum Beispiel kann ein Dienst, der Benutzerregistrierungen akzeptiert, immer dann Benachrichtigungen senden, wenn sich ein neuer Nutzer anmeldet, und Downstream-Dienste können Benachrichtigungen zu dem Ereignis abonnieren.
  • Verteilte Cache-Speicher aktualisieren. Zum Beispiel kann eine Anwendung Entwertungsereignisse veröffentlichen, um die IDs von geänderten Objekten zu aktualisieren.
  • Bei mehreren Systemen anmelden. Zum Beispiel kann eine Google Compute Engine-Instanz Protokolle in das Überwachungssystem oder in eine Datenbank für spätere Abfragen schreiben.
  • Datenstreaming von verschiedenen Prozessen oder Geräten. Zum Beispiel kann ein fester Sensor Daten an Back-End-Server streamen, die in der Cloud gehostet werden.
  • Verbesserung der Zuverlässigkeit. Zum Beispiel kann ein Compute Engine-Dienst für eine einzelne Zone in weiteren Zonen verwendet werden, wenn ein gemeinsames Thema abonniert wird, um Fehler in einer Zone oder einem Bereich zu korrigieren.

Pub/Sub-Integrationen