Was ist Pub/Sub?

Pub/Sub ermöglicht eine asynchrone Kommunikation mit Latenzen von rund 100 Millisekunden.

Pub/Sub wird für Streaminganalysen und Datenintegrationspipelines verwendet, um Daten aufzunehmen und zu verteilen. Es ist ebenso effektiv wie nachrichtenorientierte Middleware für die Dienstintegration oder als Warteschlange zur Parallelisierung von Aufgaben.

Mit Pub/Sub können Sie Systeme von Ereigniserstellern und -nutzern erstellen, die als Publisher und Abonnenten bezeichnet werden. Publisher kommunizieren asynchron mit Abonnenten, anstatt Ereignisse über synchrone Remote-Prozeduraufrufe (RPCs) zu übertragen.

Publisher senden Ereignisse an den Pub/Sub-Dienst, unabhängig davon, wie oder wann die Ereignisse verarbeitet werden. Pub/Sub stellt dann Ereignisse an alle Dienste bereit, die darauf reagieren müssen. Im Vergleich zu Systemen, die über RPCs kommunizieren, bei denen Publisher darauf warten müssen, dass Abonnenten die Daten erhalten, eine solche asynchrone Einbindung erhöht die Flexibilität und Robustheit des Systems insgesamt.

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

Gängige Anwendungsfälle

  • Nutzerinteraktion und Serverereignisse aufnehmen: Um Nutzerinteraktionsereignisse von Endnutzeranwendungen oder Serverereignissen aus Ihrem System zu verwenden, können Sie sie an Pub/Sub weiterleiten und dann ein Streamverarbeitungstool (z. B. Dataflow), das sie an BigQuery, Bigtable, Cloud Storage und andere Datenbanken sendet. Mit Pub/Sub können Sie Ereignisse von vielen Clients gleichzeitig erfassen.
  • Verteilung von Ereignissen in Echtzeit: Roh- oder verarbeitete Ereignisse können für mehrere Anwendungen in Ihrem Team und Ihrer Organisation zur Echtzeitverarbeitung verfügbar gemacht werden. Dies unterstützt einen eventUnternehmensereignisbus“ und ereignisgesteuerte Anwendungsdesignmuster. Mit Pub/Sub können Sie viele Google-Systeme einbinden, die Ereignisse nach Pub/Sub exportieren.
  • Daten zwischen Datenbanken replizieren: Pub/Sub wird häufig verwendet, um Änderungsereignisse aus Datenbanken zu verteilen. Mit diesen Ereignissen können Sie eine Ansicht des Datenbankstatus und des Statusverlaufs in BigQuery und anderen Datenspeichersystemen erstellen.
  • Parallele Verarbeitung und Workflows: Mit Pub/Sub-Nachrichten können Sie eine große Anzahl von Aufgaben effizient auf mehrere Worker verteilen, z. B. Textdateien komprimieren, E-Mail-Benachrichtigungen senden, KI-Modelle evaluieren oder Bilder neu formatieren. Cloud Functions
  • Enterprise-Ereignisbus. Sie können einen unternehmensweiten Echtzeit-Datenfreigabebus erstellen und Geschäftsereignisse, Datenbankaktualisierungen und Analyseereignisse in Ihrer gesamten Organisation verteilen.
  • Datenstreaming von IoT-Geräten. Beispielsweise kann ein residenter Sensor Daten an Back-End-Server streamen, die in der Cloud gehostet werden.
  • Verteilte Cache-Speicher aktualisieren. Eine Anwendung kann beispielsweise 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. Allerdings wird ein gemeinsames Thema abonniert. Wenn der Dienst in einer Zone ausfällt, können die anderen automatisch die Last übernehmen.

Pub/Sub oder Pub/Sub Lite

Pub/Sub besteht aus zwei Diensten:

  • Pub/Sub-Dienst: Dies ist die Standardeinstellung für die meisten Nutzer und Anwendungen. Sie bietet die höchste Zuverlässigkeit und größte Integrationsmöglichkeiten sowie automatische Kapazitätsverwaltung.

  • Pub/Sub Lite-Dienst: Ein separater, aber ähnlicher Messaging-Dienst, der kostengünstig ist Es bietet zonalen Speicher und erfordert die Bereitstellung und Verwaltung von Speicher- und Durchsatzkapazität.

Ziehen Sie Pub/Sub Lite nur für Anwendungen in Betracht, bei denen extrem kostengünstige Kosten eine zusätzliche betriebliche Arbeit und geringere Verfügbarkeit rechtfertigen.

Weitere Informationen finden Sie unter Pub/Sub oder Pub/Sub Lite auswählen. Informationen zum Testen von Pub/Sub Lite finden Sie unter Erste Schritte mit Pub/Sub Lite.

Pub/Sub mit anderen Messaging-Technologien vergleichen

Pub/Sub kombiniert die horizontale Skalierbarkeit von Apache Kafka und Pulsar mit Funktionen aus traditioneller Messaging-Middleware wie Apache ActiveMQ und RabbitMQ, z. B. Dead-Letter Warteschlangen und Filter.

Ein weiteres Feature, das von Pub/Sub aus der Messaging-Middleware übernommen wird, ist die per-nachrichtenspezifische Parallelität (nicht partitionsbasiert). Pub/Sub "freigibt" einzelne Nachrichten an Abonnentenclients. Anschließend wird nachverfolgt, ob eine bestimmte Nachricht erfolgreich verarbeitet wurde.

Im Gegensatz dazu verwenden andere horizontal skalierbare Nachrichtensysteme Partitionen für die horizontale Skalierung. Dies zwingt Abonnenten dazu, Nachrichten in jeder Partition der Reihe nach zu verarbeiten, und begrenzt die Anzahl gleichzeitiger Clients auf die Anzahl der Partitionen. Die Verarbeitung pro Nachricht maximiert die Parallelität von Abonnentenanwendungen und sorgt für die Unabhängigkeit des Verlags oder Abonnenten.

Dienst-zu-Dienst-Kommunikation im Vergleich zu Dienst-zu-Client-Kommunikation

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

Sie können eine Kombination dieser Dienste verwenden, um Clientmuster > Dienste > Datenbankmuster zu erstellen. Ein entsprechendes Beispiel finden Sie in der Anleitung Pub/Sub-Nachrichten über WebSockets streamen.

Einbindungen

Pub/Sub ist mit vielen Google Cloud-Produkten verknüpft, um ein Nachrichtensystem mit vollem Funktionsumfang zu erstellen:

  • Streamverarbeitung und Datenintegration: Unterstützt vonDataflow, einschließlich DataflowVorlagen undSQL-Datei, 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 sowie zu BigQuery und anderen Produkten sind in der Cloud Pub/Sub- und Dataflow-UI in der Cloud Console verfügbar. Auch die Einbindung in Apache Spark ist möglich, insbesondere bei der Verwaltung mit Dataproc. Die visuelle Zusammenstellung von Integrations- und Verarbeitungspipelines, die in Spark und Dataproc ausgeführt werden, kann mit DataFusion erreicht werden.
  • Monitoring, Benachrichtigungen und Logging: Von Monitoring- und Logging-Produkten unterstützt
  • Authentifizierung und IAM: Pub/Sub basiert auf einer standardmäßigen OAuth-Authentifizierung, die von anderen Google Cloud-Produkten verwendet wird, und unterstützt detailliertes IAM zur Aktivierung der Zugriffssteuerung für einzelne Ressourcen.
  • APIs: Pub/Sub verwendet standardmäßige gRPC- und REST Service API-Technologien sowie Clientbibliotheken für verschiedene Sprachen.
  • Trigger, Benachrichtigungen und Webhooks: Pub/Sub bietet Push-basierte Nachrichtenübermittlung als HTTP-POST-Anfragen an Webhooks. Auf diese Weise können Sie die Workflow-Automatisierung mit Cloud Functions oder anderen serverlosen Produkten einfach implementieren.
  • Orchestrierung: Pub/Sub kann deklarativ in mehrstufige, serverlose Workflows integriert werden. Big-Data- und Analyse-Orchestrierung wird häufig mit Cloud Composer durchgeführt, der Pub/Sub-Trigger unterstützt.

Wichtige Konzepte

  • Thema:Eine benannte Ressource, an die Nachrichten von Publishern gesendet werden.
  • Abo: Eine benannte Ressource, die den Stream von Nachrichten aus einem einzelnen, bestimmten Thema darstellt, der an die abonnierende Anwendung gesendet werden soll. Weitere Informationen zu Abos und der Semantik für die Nachrichtenzustellung finden Sie im Abonnentenleitfaden.
  • Nachricht: Die Kombination von Daten und (optionalen) Attributen, die ein Publisher an ein Thema sendet und die schließlich an Abonnenten gesendet wird.
  • Nachrichtenattribut: Ein Schlüssel/Wert-Paar, das ein Publisher für eine Nachricht definieren kann. Zum Beispiel können den Nachrichten der Schlüssel iana.org/language_tag und der Wert en hinzugefügt werden, um sie für einen englischsprachigen Abonnenten als lesbar zu markieren.
  • Publisher: Eine Anwendung, die Nachrichten erstellt und an ein Thema sendet.
  • Abonnent: Eine App mit einem Abo für ein Thema, um Nachrichten von ihr zu empfangen.
  • Bestätigung (oder "Bestätigung"): Ein Signal, das ein Abonnent an Pub/Sub sendet, nachdem er eine Nachricht erfolgreich empfangen hat. Bestätigte Nachrichten werden aus der Nachrichtenwarteschlange des Abos entfernt.
  • Push und Pull: Mit diesen Methoden werden Nachrichten zugestellt. Ein Abonnent empfängt Nachrichten entweder per Pub/Sub, indem er sie per Push an den ausgewählten Endpunkt des Abonnenten sendet, oder indem der Abonnent sie vom Dienst abruft.

Bei den Publisher-Abonnenten-Beziehungen kann es sich um 1:n (Fan-Out), m:n (Fan-in) oder m:n (siehe nachfolgenden Diagramm) handeln.

Publisher-Abonnenten-Beziehungen

Das folgende Diagramm zeigt, wie eine Nachricht von einem Publisher an einen Abonnenten gesendet wird. Beachten Sie, dass für die Push-Zustellung die Antwort in der Antwort auf die Push-Anfrage implizit ist, während sie für die Pull-Zustellung einen separaten RPC erfordert.

Nachrichtenlebenszyklus

Weitere Informationen