Was ist Pub/Sub?

Pub/Sub ermöglicht Diensten asynchron, mit Latenzen von 100 Millisekunden zu kommunizieren.

Pub/Sub wird für Streaminganalyse- und Datenintegrationspipelines verwendet, um Daten aufzunehmen und zu verteilen. Es ist gleichermaßen effektiv als nachrichtenorientierte Middleware für die Dienstintegration oder als Warteschlange zur Parallelisierung von Aufgaben.

Mit Pub/Sub lassen sich Systeme für Eventersteller und Nutzer erstellen, die Publisher und Abonnenten sind. Publisher kommunizieren asynchron mit Abonnenten, indem sie Ereignisse übertragen, und nicht durch synchrone Remoteprozeduraufrufe (RPCs).

Publisher senden Ereignisse an den Pub/Sub-Dienst, ohne berücksichtigen zu müssen, wie oder wann diese Ereignisse verarbeitet werden. Pub/Sub liefert Ereignisse dann an alle Dienste, die darauf reagieren müssen. Verglichen mit Systemen, die über RPCs kommunizieren, müssen Publisher auf die Empfang der Daten warten, um die Daten zu erhalten. Mit dieser asynchronen Einbindung lassen sich Flexibilität und Robustheit des Systems insgesamt erhöhen.

Informationen zum Einstieg in Pub/Sub finden Sie unter Kurzanleitung: Cloud Console verwenden. Eine umfassendere Einführung finden Sie unter Pub/Sub-Nachrichtensystem erstellen.

Gängige Anwendungsfälle

  • Nutzerinteraktions- und Serverereignisse erfassen: Wenn Sie Nutzerinteraktionsereignisse aus Endnutzer-Apps oder Serverereignissen Ihres Systems verwenden möchten, können Sie sie an Pub/Sub weiterleiten und dann einen Streamverarbeitungstool wie 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 der Ereignisse in Echtzeit: Unbearbeitete oder verarbeitete Ereignisse können für mehrere Anwendungen in Ihrem Team und Ihrer Organisation zur Echtzeitverarbeitung bereitgestellt werden. Damit wird ein "Event Event Bus" und ein ereignisgesteuertes Designmuster für Anwendungen unterstützt. Pub/Sub ermöglicht die Einbindung in viele Google-Systeme, die Ereignisse in Pub/Sub exportieren.
  • Daten zwischen Datenbanken replizieren. Pub/Sub wird häufig verwendet, um Änderungsereignisse aus Datenbanken zu verteilen. Mit diesen Ereignissen lässt sich eine Ansicht des Datenbankstatus und des Statusverlaufs in BigQuery und anderen Datenspeichersystemen erstellen.
  • Parallele Verarbeitung und Workflows: Mithilfe von Pub/Sub-Nachrichten können Sie eine große Anzahl von Aufgaben auf mehrere Worker effizient verteilen, z. B. das Komprimieren von Textdateien, das Senden von E-Mail-Benachrichtigungen, das Bewerten von KI-Modellen oder die Neuformatierung von Bildern. Cloud Functions
  • Enterprise-Event-Bus. Sie können einen Unternehmenspfad erstellen, der in Echtzeit im Unternehmen genutzt wird und Geschäftsereignisse, Datenbankaktualisierungen und Analyseereignisse in Ihrer Organisation verteilt.
  • Datenstreaming von IoT-Geräten Beispielsweise kann ein Präsidentensensor Daten auf 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 auf mehreren Zonen in Compute Engine bereitgestellt werden, wobei sie ein gemeinsames Thema abonnieren. Wenn der Dienst in einer beliebigen Zone fehlschlägt, können die anderen die Last automatisch ü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. Es bietet die höchste Zuverlässigkeit und größte Gruppe von Integrationen sowie automatische Kapazitätsverwaltung.

  • Pub/Sub Lite-Dienst: Ein separater, aber ähnlicher Messaging-Dienst, der zu niedrigen Kosten entwickelt wurde. Er bietet zonalen Speicher, sodass Sie Speicher- und Durchsatzkapazität im Voraus bereitstellen und verwalten müssen.

Verwenden Sie Pub/Sub Lite nur für Anwendungen, bei denen extrem geringe Kosten einige zusätzliche operative Arbeit und eine niedrigere Verfügbarkeit begründen.

Weitere Einzelheiten 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 Features in herkömmlichen Messaging-Middleware wie Apache ActiveMQ und RabbitMQ, wie Dead-Letter. Warteschlangen und Filter.

Eine andere Funktion, die Pub/Sub von der Messaging-Middleware übernimmt, ist Nachrichten pro Parallelität (und nicht partitionbasiert). Pub/Sub gibt einzelne Nachrichten an Abonnentenclients weiter 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 und die Anzahl der gleichzeitigen Clients auf die Anzahl der Partitionen zu beschränken. Die Verarbeitung pro Nachricht reduziert die Parallelität von Abonnentenanwendungen und sorgt dafür, dass Publisher-/Abonnenten-Unabhängigkeit gewährleistet sind.

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

Pub/Sub ist für die Dienst-zu-Dienst-Kommunikation gedacht 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 Client->> Dienste -> Datenbankmuster zu erstellen. Sehen Sie sich als Beispiel die Anleitung Pub/Sub-Nachrichten über WebSockets streamen an.

Einbindungen

Pub/Sub bietet zahlreiche Integrationen in andere Google Cloud-Produkte, um ein Full-Feature-Messaging-System zu erstellen:

  • Streamverarbeitung und Datenintegration:Unterstützt von Dataflow, einschließlich Dataflow-Vorlagen und SQL, die Verarbeitung und {101] ermöglichen }Datenintegration in BigQuery und Data Lakes in Cloud Storage. Dataflow-Vorlagen zum Verschieben von Daten von Pub/Sub zu Cloud Storage, BigQuery und anderen Produkten sind in der Cloud Console in der Pub/Sub- und Dataflow-UI verfügbar. Die Einbindung in Apache Spark ist insbesondere durch die Verwaltung mit Dataproc möglich. Die visuelle Zusammensetzung der Integrations- und Verarbeitungspipelines, die in Spark + Dataproc ausgeführt werden, kann mit Datafusion erreicht werden.
  • Monitoring, Benachrichtigungen und Logging: Unterstützt von Monitoring- und Logging-Produkten.
  • Authentifizierung und IAM: Pub/Sub basiert auf einer Standard-OAuth-Authentifizierung, die von anderen Google Cloud-Produkten verwendet wird und eine detaillierte IAM unterstützt, wodurch die Zugriffssteuerung für einzelne Ressourcen aktiviert wird.
  • APIs:Pub/Sub verwendet standardmäßige gRPC- und REST Service-Technologien zusammen mit Clientbibliotheken für mehrere 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 serverloses Workflow-Workflows integriert werden. Big Data und Analyseorchestrierung werden häufig mit Cloud Composer ausgeführt, das 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, spezifischen Thema darstellt, das an die abonnierende Anwendung gesendet 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: Eine Anwendung, die Nachrichten zu einem Thema erstellt und sendet.
  • Subscriber(Abonnent): Eine Anwendung mit einem Abo zu einem Thema, um Nachrichten daraus zu erhalten.
  • Bestätigung (oder "Bestätigung"): Ein Signal, das von einem Abonnenten an Pub/Sub gesendet wird, nachdem eine Nachricht erfolgreich empfangen wurde. Ausgelöste Nachrichten werden aus der Nachrichtenwarteschlange des Abos entfernt.
  • Push und Pull: Die beiden Methoden zur Nachrichtenübermittlung. Ein Abonnent empfängt Nachrichten entweder per Pub/Sub, Per Push an den gewählten Endpunkt des Abonnenten oder per Pull aus dem Dienst.

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

Publisher-Abonnenten-Beziehungen

Das folgende Diagramm zeigt, wie eine Nachricht von einem Publisher an einen Abonnenten weitergeleitet wird. Beachten Sie, dass bei der Push-Zustellung das Bestätigungspaket in der Antwort auf die Push-Anfrage implizit ist, während für die Pull-Zustellung ein separater RPC erforderlich ist.

Nachrichtenlebenszyklus

Mehr zur Verwendung der Play Console erfahren