Was sind Pub/Sub und Pub/Sub Lite?

Auf dieser Seite erfahren Sie mehr über Pub/Sub, warum Unternehmen Pub/Sub benötigen und welche Vorteile Pub/Sub im Vergleich zu ähnlichen Technologien bietet. Informieren Sie sich auch über die Pub/Sub-Kernkonzepte wie Thema, Publisher und Abonnent.

Pub/Sub ist ein asynchroner und skalierbarer Messaging-Dienst, der Dienste, die Nachrichten erzeugen, von Diensten entkoppelt, die diese Nachrichten verarbeiten.

Mit Pub/Sub können Dienste asynchron mit Latenzen von bis zu 100 Millisekunden kommunizieren.

Pub/Sub wird für Streaminganalysen und Pipelines zur Datenintegration verwendet, um Daten aufzunehmen und zu verteilen. Sie ist genauso effektiv wie eine nachrichtenorientierte Middleware für die Dienstintegration oder als Warteschlange zum Parallelisieren von Aufgaben.

Mit Pub/Sub können Sie Systeme für Ereignisersteller und -nutzer erstellen, die als Publisher und Abonnenten bezeichnet werden. Publisher kommunizieren asynchron mit Abonnenten durch Broadcast-Ereignisse und nicht durch synchrone Remote-Prozeduraufrufe (RPCs).

Publisher senden Ereignisse an den Pub/Sub-Dienst, unabhängig davon, wie oder wann diese Ereignisse verarbeitet werden sollen. Pub/Sub liefert dann Ereignisse an alle Dienste, die darauf reagieren. Bei Systemen, die über RPCs kommunizieren, müssen Verlage und Webpublisher warten, bis Abonnenten die Daten erhalten. Die asynchrone Einbindung in Pub/Sub erhöht jedoch die Flexibilität und Robustheit des Gesamtsystems.

Informationen zu den ersten Schritten mit Pub/Sub finden Sie in der Kurzanleitung zur Verwendung der Google Cloud Console. Eine umfassendere Einführung finden Sie unter Pub/Sub-Messaging-System erstellen.

Gängige Anwendungsfälle

  • Aufnahme von Nutzerinteraktionen und Serverereignissen. Wenn Sie Nutzerinteraktionsereignisse von Endnutzeranwendungen oder Serverereignisse aus Ihrem System verwenden möchten, können Sie sie an Pub/Sub weiterleiten. Sie können dann ein Streamverarbeitungstool wie Dataflow verwenden, das die Ereignisse an Datenbanken liefert. Beispiele für solche Datenbanken sind BigQuery, Bigtable und Cloud Storage. Mit Pub/Sub können Sie Ereignisse von vielen Clients gleichzeitig erfassen.

  • Ereignisverteilung in Echtzeit. Rohe oder verarbeitete Ereignisse können mehreren Anwendungen in Ihrem Team und Ihrer Organisation zur Echtzeitverarbeitung zur Verfügung gestellt werden. Pub/Sub unterstützt einen „Unternehmensereignisbus“ und ereignisgesteuerte Anwendungsdesignmuster. Pub/Sub ermöglicht die Einbindung in viele Google-Systeme, die Ereignisse nach Pub/Sub exportieren.

  • Daten zwischen Datenbanken replizieren. Pub/Sub wird häufig verwendet, um Änderungsereignisse aus Datenbanken zu verteilen. Anhand dieser Ereignisse können Sie eine Ansicht des Datenbankstatus und des Statusverlaufs in BigQuery und anderen Datenspeichersystemen erstellen.

  • Parallele Verarbeitung und Workflows Sie können viele Aufgaben effizient auf mehrere Worker verteilen, wenn Sie Pub/Sub-Nachrichten verwenden, um eine Verbindung zu Cloud Functions herzustellen. Beispiele für solche Aufgaben sind das Komprimieren von Textdateien, das Senden von E-Mail-Benachrichtigungen, das Bewerten von KI-Modellen und das Neuformatieren von Bildern.

  • Ereignisbus für Unternehmen Sie können einen unternehmensweiten Echtzeitbus zur Datenfreigabe erstellen und so Geschäftsereignisse, Datenbankaktualisierungen und Analyseereignisse in Ihrem gesamten Unternehmen verteilen.

  • Datenstreaming von Anwendungen, Diensten oder IoT-Geräten. Eine SaaS-Anwendung kann beispielsweise einen Echtzeitfeed von Ereignissen veröffentlichen. Oder ein Sensor in einem Wohngebäude kann Daten über eine Dataflow-Pipeline an Pub/Sub streamen, um sie in anderen Google Cloud-Produkten zu verwenden.

  • Verteilte Cache-Speicher aktualisieren. Beispielsweise kann eine Anwendung Entwertungsereignisse veröffentlichen, um die IDs von geänderten Objekten zu aktualisieren.

  • Load-Balancing für Zuverlässigkeit. Beispielsweise können Instanzen eines Dienstes in Compute Engine in mehreren Zonen bereitgestellt werden, aber ein gemeinsames Thema abonnieren. Wenn der Dienst in einer Zone ausfällt, können die anderen die Last automatisch übernehmen.

Arten von Pub/Sub-Diensten

Pub/Sub besteht aus zwei Diensten:

  • Pub/Sub-Dienst: Dieser Messaging-Dienst wird von den meisten Nutzern und Anwendungen standardmäßig verwendet. Es bietet die höchste Zuverlässigkeit und die umfassendsten Integrationen sowie automatische Kapazitätsverwaltung. Pub/Sub garantiert die synchrone Replikation aller Daten in mindestens zwei Zonen und die bestmögliche Replikation in eine dritte zusätzliche Zone.

  • Pub/Sub Lite-Dienst: Ein separater, aber ähnlicher Messaging-Dienst, der zu geringeren Kosten entwickelt wurde. Es bietet eine geringere Zuverlässigkeit im Vergleich zu Pub/Sub. Sie bietet entweder zonalen oder regionalen Themenspeicher. Zonale Lite-Themen werden nur in einer Zone gespeichert. Regionale Lite-Themen replizieren Daten asynchron in eine zweite Zone. Außerdem erfordert Pub/Sub Lite, dass Sie Speicher- und Durchsatzkapazität vorab bereitstellen und verwalten. Erwägen Sie Pub/Sub Lite nur für Anwendungen, bei denen die geringen Kosten zusätzliche operative Arbeit und eine geringere Zuverlässigkeit rechtfertigen.

Weitere Informationen zu den Unterschieden zwischen Pub/Sub und Pub/Sub Lite finden Sie unter Pub/Sub oder Pub/Sub Lite auswählen.

Pub/Sub mit anderen Messaging-Technologien vergleichen

Pub/Sub kombiniert die horizontale Skalierbarkeit von Apache Kafka und Pulsar mit Features der herkömmlichen Messaging-Middleware wie Apache ActiveMQ und RabbitMQ. Beispiele für solche Funktionen sind Dead-Letter-Warteschlangen und Filter.

Ein weiteres Feature, das Pub/Sub von Messaging-Middleware übernimmt, ist Parallelität pro Nachricht und nicht partitionsbasiertes Messaging. Pub/Sub sendet einzelne Nachrichten an Abonnentenclients und verfolgt dann, ob eine bestimmte Nachricht erfolgreich verarbeitet wurde.

Im Gegensatz dazu verwenden andere horizontal skalierbare Nachrichtensysteme Partitionen für die horizontale Skalierung. Dadurch werden Abonnenten gezwungen, Nachrichten in jeder Partition der Reihe nach zu verarbeiten. Die Anzahl der gleichzeitigen Clients wird auf die Anzahl der Partitionen begrenzt. Die Verarbeitung pro Nachricht maximiert die Parallelität von Abonnentenanwendungen und sorgt für die Unabhängigkeit von Publisher/Abonnenten.

Dienst-zu-Dienst- und Dienst-zu-Client-Kommunikation vergleichen

Pub/Sub ist für die Dienst-zu-Dienst-Kommunikation gedacht und nicht für die Kommunikation mit Endnutzer- oder IoT-Clients. Andere Muster werden von anderen Produkten besser unterstützt:

Sie können eine Kombination dieser Dienste verwenden, um folgende Muster zu erstellen: Client -> Dienste -> Datenbank. Weitere Informationen finden Sie beispielsweise in der Anleitung Pub/Sub-Nachrichten über WebSockets streamen.

Integrationen

Pub/Sub bietet viele Integrationen in andere Google Cloud-Produkte, um ein Nachrichtensystem mit komplettem Funktionsumfang zu erstellen:

  • Streamverarbeitung und Datenintegration Wird von Dataflow unterstützt, einschließlich Dataflow-Vorlagen und SQL, die die Verarbeitung und Datenintegration in BigQuery und Data Lakes in Cloud Storage ermöglichen. Dataflow-Vorlagen zum Verschieben von Daten aus Pub/Sub zu Cloud Storage, BigQuery und anderen Produkten sind in den Pub/Sub- und Dataflow-UIs in der Google Cloud Console verfügbar. Die Integration in Apache Spark ist auch verfügbar, insbesondere, wenn die Verwaltung mit Dataproc erfolgt. Die visuelle Zusammensetzung von Integrations- und Verarbeitungspipelines, die in Spark und Dataproc ausgeführt werden, kann mit Data Fusion erreicht werden.
  • Monitoring, Benachrichtigungen und Logging: Unterstützt von Monitoring- und Logging-Produkten.
  • Authentifizierung und IAM: Pub/Sub basiert auf einer standardmäßigen OAuth-Authentifizierung, die von anderen Google Cloud-Produkten verwendet wird, und unterstützt detaillierte IAM, wodurch die Zugriffssteuerung für einzelne Ressourcen ermöglicht wird.
  • APIs Pub/Sub verwendet standardmäßige gRPC- und REST-Dienst-API-Technologien sowie Clientbibliotheken für mehrere Sprachen.
  • Trigger, Benachrichtigungen und Webhooks: Pub/Sub bietet Push-basierte Übermittlung von Nachrichten als HTTP-POST-Anfragen an Webhooks. Sie können die Workflowautomatisierung mit Cloud Functions oder anderen serverlosen Produkten implementieren.
  • Orchestrierung: Pub/Sub kann deklarativ in mehrstufige serverlose Workflows eingebunden werden. Big-Data- und analytische Orchestrierung wird häufig mit Cloud Composer durchgeführt, das Pub/Sub-Trigger unterstützt. Sie können Pub/Sub auch in Application Integration (Vorabversion) einbinden, eine Integration-Platform-as-a-Service-Lösung (iPaaS). Application Integration bietet einen Pub/Sub-Trigger, um Integrationen auszulösen oder zu starten.
  • Integration Connectors.(Vorschau) Über diese connectors können Sie Verbindungen zu verschiedenen Datenquellen herstellen. Wenn Sie Connectors verwenden, werden Ihre Integrationen sowohl für Google Cloud-Dienste als auch für Geschäftsanwendungen von Drittanbietern über eine transparente Standardoberfläche geöffnet. Für Pub/Sub können Sie eine Pub/Sub-Verbindung zur Verwendung in Ihren Integrationen erstellen.

Wichtige Konzepte

  • Thema: Eine benannte Ressource, an die Nachrichten von Publishern gesendet werden.
  • Abo: Eine benannte Ressource, die den Nachrichtenstrom aus einem einzelnen, bestimmten Thema darstellt, der an die abonnierende Anwendung zugestellt werden soll. Weitere Informationen zu Abos und zur Semantik der Nachrichtenzustellung finden Sie im Abonnentenleitfaden.
  • Nachricht. Die Kombination aus 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.
  • Verlag oder Webpublisher: Eine Anwendung, die Nachrichten für ein oder mehrere Themen erstellt und an diese sendet.
  • Abonnent: Eine Anwendung mit einem Abo für ein oder mehrere Themen, um Nachrichten von diesem Thema zu empfangen.
  • Bestätigung (oder „ack“). Ein Signal, das von einem Abonnenten an Pub/Sub gesendet wird, nachdem er eine Nachricht erfolgreich empfangen hat. Bestätigte Nachrichten werden aus der Abo-Nachrichtenwarteschlange entfernt.
  • Drücken und Ziehen. Die beiden Methoden der Nachrichtenzustellung. Ein Abonnent empfängt Nachrichten entweder dadurch, dass Pub/Sub sie an den vom Abonnenten ausgewählten Endpunkt weiterleitet, oder indem der Abonnent sie vom Dienst abruft.

Publisher-Abonnenten-Beziehungen können 1:n-Beziehungen (Fan-Out), n:1-Beziehungen (Fan-in) und n:n-Beziehungen sein, wie im folgenden Diagramm dargestellt:

Publisher-Abonnenten-Beziehungen

Das folgende Diagramm zeigt, wie eine Nachricht von einem Publisher an einen Abonnenten übergeben wird. Bei der Push-Zustellung ist die Bestätigung implizit in der Antwort auf die Push-Anfrage, während für die Pull-Zustellung ein separater RPC erforderlich ist.

Nachrichtenlebenszyklus

Weitere Informationen