Blog
Ein Vergleich von Google Cloud Pub/Sub und NATS

Einführung
Dieser Artikel enthält einen Vergleich von Cloud Pub/Sub und NATS als Nachrichtenbroker für verteilte Anwendungen. Wir werden uns auf die Unterschiede, Vor- und Nachteile beider Systeme konzentrieren.
Wolke Pub/Sub
Cloud Pub/Sub bietet Messaging- und Ingestion-Funktionen für ereignisgesteuerte Systeme und Streaming-Analysen. Die Highlights des Tools lassen sich wie folgt zusammenfassen:
- Skalierbare, geordnete Nachrichtenzustellung mit Pull- und Push-Modus
- Automatische Skalierung und automatische Bereitstellung mit Unterstützung von null bis Hunderten von GB/Sekunde
- Unabhängige Quoten und Abrechnungen für Verleger und Abonnenten
- Globale Nachrichtenweiterleitung zur Vereinfachung von Systemen mit mehreren Regionen
Außerdem bietet Cloud Pub/Sub die folgenden Vorteile gegenüber nicht von Google verwalteten Systemen:
- Synchrone, zonenübergreifende Nachrichtenreplikation und Empfangsverfolgung pro Nachricht gewährleisten eine zuverlässige Zustellung in jeder Größenordnung
- Automatische Skalierung und automatische Bereitstellung ohne Partitionen machen die Planung überflüssig und stellen sicher, dass die Arbeitslasten vom ersten Tag an produktionsbereit sind.
- Filterung, Dead-Letter-Zustellung und exponentielles Backoff ohne Einbußen bei der Skalierung vereinfachen Ihre Anwendungen
- Die native Dataflow-Integration ermöglicht eine zuverlässige, ausdrucksstarke, exakt einmalige Verarbeitung und Integration von Ereignisströmen in Java, Python und SQL.
- Die optionale Sortierung nach Schlüsseln vereinfacht die zustandsbehaftete Anwendungslogik ohne Einbußen bei der horizontalen Skalierung - keine Partitionen erforderlich.
- Pub/Sub Lite ist die kostengünstigste Option für die Aufnahme von Ereignissen in großem Umfang. - Pub/Sub Lite bietet zonale Speicherung und gibt Ihnen die Kontrolle über die Kapazitätsverwaltung.
Einige Anwendungsfälle von Cloud Pub/Sub sind:
- Die Stream-Analyse von Google sorgt dafür, dass Daten ab dem Zeitpunkt ihrer Generierung besser organisiert, nützlicher und zugänglicher werden. Die Streaming-Lösung basiert auf Pub/Sub sowie Dataflow und BigQuery und stellt die Ressourcen bereit, die für die Aufnahme, Verarbeitung und Analyse schwankender Mengen von Echtzeitdaten erforderlich sind, um Geschäftseinblicke in Echtzeit zu gewinnen. Diese abstrahierte Bereitstellung reduziert die Komplexität und macht Stream-Analysen sowohl für Datenanalysten als auch für Dateningenieure zugänglich.
- Pub/Sub funktioniert als Messaging-Middleware für die traditionelle Dienstintegration oder als einfaches Kommunikationsmedium für moderne Microservices. Push-Abonnements liefern Ereignisse an serverlose Webhooks auf Cloud Functions, App Engine, Cloud Run oder benutzerdefinierten Umgebungen auf Google Kubernetes Engine oder Compute Engine. Pull-Abonnements mit niedriger Latenz sind verfügbar, wenn die Bereitstellung von Webhooks keine Option ist oder für die effiziente Verarbeitung von Streams mit höherem Durchsatz.
Eigenschaften
Cloud Pub/Sub bietet die folgenden Funktionen:
- Mindestens einmalige Zustellung: Die synchrone, zonenübergreifende Replikation von Nachrichten und die Verfolgung des Eingangs jeder einzelnen Nachricht gewährleisten eine einmalige Zustellung in jedem Umfang.
- Offen: Offene APIs und Client-Bibliotheken in sieben Sprachen unterstützen Cloud-übergreifende und hybride Implementierungen.
- Exakt-einmalige Verarbeitung: Dataflow unterstützt die zuverlässige, ausdrucksstarke, exakt einmalige Verarbeitung von Pub/Sub-Streams.
- Kein Provisioning, alles automatisch: Pub/Sub hat keine Shards oder Partitionen. Legen Sie einfach Ihre Quote fest, veröffentlichen Sie und konsumieren Sie.
- Konformität und Sicherheit: Pub/Sub ist ein HIPAA-konformer Dienst, der fein abgestufte Zugriffskontrollen und eine Ende-zu-Ende-Verschlüsselung bietet.
- Google Cloud-native Integrationen: Nutzen Sie die Vorteile von Integrationen mit mehreren Diensten, wie z.B. Cloud Storage und Gmail Update-Ereignisse und Cloud Functions für Serverless Event-Driven Computing.
- Integrationen von Drittanbietern und OSS: Pub/Sub bietet Drittanbieter-Integrationen mit Splunk und Datadog für Protokolle sowie mit Striim und Informatica für die Datenintegration. Darüber hinaus sind OSS-Integrationen über Confluent Cloud für Apache Kafka und Knative Eventing für Kubernetes-basierte serverlose Workloads verfügbar.
- Suchen und Wiedergeben: Spulen Sie Ihr Backlog bis zu einem beliebigen Zeitpunkt oder einem Schnappschuss zurück, so dass Sie die Nachrichten erneut bearbeiten können. Schneller Vorlauf, um veraltete Daten zu verwerfen.
- Themen für tote Briefe: Themen für tote Briefe ermöglichen es, dass Nachrichten, die von den Teilnehmeranwendungen nicht verarbeitet werden können, zur Offline-Prüfung und Fehlersuche beiseite gelegt werden, damit andere Nachrichten ohne Verzögerung verarbeitet werden können.
- Filtern: Pub/Sub kann Nachrichten auf der Grundlage von Attributen filtern, um das Zustellungsvolumen an die Abonnenten zu reduzieren.
Preisgestaltung
Cloud Pub/Sub ist bis zu einem Datenvolumen von 10 GB/Monat kostenlos, darüber hinaus wird eine Pauschale von $40,00/TB/Monat berechnet.
Zusammenfassung von Cloud Pub/Sub
Cloud Pub/Sub ist die Standardwahl für Cloud-native Anwendungen, die auf Google Cloud laufen. Insgesamt lassen sich die Vor- und Nachteile des Tools mit den folgenden Punkten zusammenfassen:
Wichtigste Vorteile
- Google-verwaltet. Für die Nutzung ist keine komplexe Einrichtung oder Konfiguration erforderlich.
- Integrationen. Cloud Pub/Sub lässt sich nahtlos in andere Google Cloud-Dienste integrieren, zum Beispiel in die Kubernetes Engine.
- Sicher. Standardmäßig aktivierte Ende-zu-Ende-Verschlüsselung und integrierte HIPAA-Konformität.
Wichtigste Nachteile
- Begrenzte Auswahl an Mustern. Cloud Pub/Sub implementiert das Publisher-Subscriber-Muster. Es ist jedoch möglich, ein One-to-Many-Pub/Sub-System einzurichten, wie unter Aufbau eines One-to-Many-Pub/Sub-Systems beschrieben .
Weitere Informationen finden Sie unter FeedbackWas ist Pub/Sub Übersicht.
NATS
NATS ist ein Message Broker, der es Anwendungen ermöglicht, sicher über eine beliebige Kombination von Cloud-Anbietern, On-Premise, Edge, Web und Mobile sowie Geräten zu kommunizieren. NATS besteht aus einer Familie von Open-Source-Produkten, die eng integriert sind, aber einfach und unabhängig voneinander eingesetzt werden können. NATS erleichtert die Entwicklung verteilter Anwendungen und bietet Client-APIs in über 40 Sprachen und Frameworks, darunter Go, Java, JavaScript/TypeScript, Python, Ruby, Rust, C#, C und NGINX. Darüber hinaus werden Echtzeit-Daten-Streaming, hoch belastbare Datenspeicherung und flexibler Datenabruf durch JetStream , das in den NATS-Server integriert ist, unterstützt.
Die Highlights des Tools lassen sich wie folgt zusammenfassen:
- Mit flexiblen Bereitstellungsmodellen unter Verwendung von Clustern, Superclustern und Leaf Nodes können Sie die Kommunikation für Ihre individuelle Bereitstellung optimieren. Die NATS Adaptive Edge Architecture passt sich perfekt an die individuellen Anforderungen an, um Geräte, Edge-, Cloud- oder hybride Implementierungen zu verbinden.
- Mit echter Mandantenfähigkeit können Sie Ihre Daten sicher isolieren und gemeinsam nutzen, um Ihre Geschäftsanforderungen vollständig zu erfüllen, Risiken zu minimieren und eine schnellere Wertschöpfung zu erzielen. Die Sicherheit ist von der Topologie entkoppelt, so dass Sie sich überall in einer Bereitstellung anschließen können und NATS das Richtige tut.
- Mit der Fähigkeit, Millionen von Nachrichten pro Sekunde pro Server zu verarbeiten, erreichen Sie mit NATS eine unvergleichliche Effizienz. Sparen Sie Geld, indem Sie die Cloud-Kosten durch eine geringere Rechen- und Netzwerknutzung für Streams, Services und Eventing minimieren.
- NATS heilt sich selbst und kann jederzeit nach oben oder unten skalieren oder Topologieänderungen ohne Ausfallzeiten für Ihr System bewältigen. Die Kunden müssen die NATS-Topologie nicht kennen, so dass Sie Ihr System zukunftssicher machen können, um Ihre heutigen und zukünftigen Anforderungen zu erfüllen.
Einige Anwendungsfälle von NATS sind:
- Cloud Messaging
- Dienste (Mikrodienste, Dienstnetz)
- Ereignis-/Daten-Streaming (Beobachtbarkeit, Analytik, ML/AI)
- Kommando und Kontrolle
- IoT und Edge
- Telemetrie / Sensordaten / Steuerung und Kontrolle
- Erweitern oder Ersetzen bestehender Messaging-Systeme
Eigenschaften
NATS bietet die folgenden Funktionen:
- Abgedeckte Sprachen und Plattformen: NATS-Kern: 48 bekannte Client-Typen, 11 von den Maintainern unterstützt, 18 von der Community beigetragen. NATS Streaming: 7 Client-Typen werden von den Betreuern unterstützt, 4 wurden von der Community beigesteuert. NATS Server können auf Architekturen kompiliert werden, die von Golang unterstützt werden. NATS bietet Binärdistributionen an.
- Eingebaute Patterns: Streams und Dienste durch eingebaute Veröffentlichungs-/Abonnement-, Anfrage-/Antwort- und lastverteilte Warteschlangen-Teilnehmermuster. Dynamische Anfrageberechtigung und Verschleierung von Anfragesubjekten wird unterstützt.
- Liefergarantien: Höchstens einmal, mindestens einmal und genau einmal ist in JetStream verfügbar.
- Mehrmandantenfähigkeit und gemeinsame Nutzung: NATS unterstützt echte Mandantenfähigkeit und dezentralisierte Sicherheit durch Konten und die Definition gemeinsam genutzter Streams und Dienste.
- AuthN: NATS unterstützt TLS, NATS-Zugangsdaten, NKEYS (NATS ED25519 Schlüssel), Benutzername und Passwort oder einfache Token.
- AuthZ: Kontobeschränkungen einschließlich Anzahl der Verbindungen, Nachrichtengröße, Anzahl der Importe und Exporte. Berechtigungen auf Benutzerebene für Veröffentlichungen und Abonnements, Verbindungsbeschränkungen, CIDR-Adressbeschränkungen und Tageszeitbeschränkungen.
- Nachrichtenaufbewahrung und Persistenz: Unterstützt Speicher-, Datei- und Datenbankpersistenz. Nachrichten können nach Zeit, Anzahl oder Sequenznummer wiedergegeben werden, und es werden dauerhafte Abonnements unterstützt. Mit NATS Streaming können Skripte alte Protokollsegmente in einem kalten Speicher archivieren.
- Hohe Verfügbarkeit und Fehlertoleranz: Core NATS unterstützt Full Mesh Clustering mit Selbstheilungsfunktionen, um den Kunden eine hohe Verfügbarkeit zu bieten. NATS Streaming verfügt über Warm-Failover-Backup-Server mit zwei Modi (FT und Full Clustering). JetStream unterstützt horizontale Skalierbarkeit mit integrierter Spiegelung.
- Bereitstellung: Das NATS-Netzwerkelement (Server) ist eine kleine statische Binärdatei, die überall eingesetzt werden kann, von großen Instanzen in der Cloud bis hin zu ressourcenbeschränkten Geräten wie einem Raspberry PI. NATS unterstützt die Adaptive Edge-Architektur, die große, flexible Einsätze ermöglicht. Einzelne Server, Leaf Nodes, Cluster und Supercluster (Cluster von Clustern) können beliebig kombiniert werden, um eine extrem flexible Bereitstellung in der Cloud, vor Ort, am Rande des Netzwerks und im IoT zu ermöglichen. Die Clients kennen die Topologie nicht und können sich mit jedem NATS-Server in einer Bereitstellung verbinden.
- Überwachung: NATS unterstützt den Export von Überwachungsdaten nach Prometheus und verfügt über Grafana Dashboards zur Überwachung und Konfiguration von Warnungen. Es gibt auch Entwicklungsüberwachungstools wie nats-top. Robuste Seitenwagenbereitstellung oder ein einfaches Connect-and-View-Modell mit NATS Surveyor wird unterstützt.
- Management: NATS trennt den Betrieb von der Sicherheit. Die Benutzer- und Kontenverwaltung in einer Einrichtung kann dezentralisiert und über eine Befehlszeile verwaltet werden. Die Konfiguration des Servers (Netzelement) ist von der Sicherheit getrennt und erfolgt über eine Befehlszeile und eine Konfigurationsdatei, die zur Laufzeit mit Änderungen neu geladen werden kann.
- Integrationen: NATS unterstützt WebSockets, eine Kafka-Brücke, eine IBM MQ-Brücke, einen Redis-Konnektor, Apache Spark, Apache Flink, CoreOS, Elastic, Elasticsearch, Prometheus, Telegraf, Logrus, Fluent Bit, Fluentd, OpenFAAS, HTTP und MQTT und mehr.
Preisgestaltung
Für die Bereitstellung von NATS fallen keine Gebühren an, allerdings müssen die Kosten für die Instanzen, auf denen das System läuft, und die damit verbundene Wartung (und die damit verbundenen Zeitkosten) berücksichtigt werden. Die endgültigen Kosten hängen von der Anzahl und der Art der Instanzen ab, die für den Betrieb von NATS ausgewählt wurden.
Zusammenfassung von NATS
NATS ist ein von der CNCF anerkannter Message Broker. Insgesamt lassen sich die Vor- und Nachteile des Tools mit den folgenden Punkten zusammenfassen:
Wichtigste Vorteile
- Es unterstützt mehr Muster. Streams und Dienste durch eingebaute Veröffentlichungs-/Abonnement-, Anfrage-/Antwort- und lastverteilte Warteschlangen-Teilnehmermuster. Dynamische Anfrageberechtigung und Anfrage-Subjekt-Verschleierung werden unterstützt.
Wichtigste Nachteile
- Benutzer-verwaltet. NATS kann zwar als Google Cloud Marketplace-Lösung bereitgestellt werden, aber komplexere Szenarien wie multiregionale Cluster erfordern eine umfangreiche Konfiguration durch den Benutzer, sowohl für NATS selbst als auch für zugehörige Ressourcen (z. B. Firewall-Regeln). Die Verwendung der von NATS bereitgestellten Helm-Diagramme zur Ausführung auf Kubernetes erleichtert jedoch viele Aspekte des Prozesses (siehe Nats kubernetes)
Weitere Informationen finden Sie in der Nats-Dokumentation.
Fazit
Cloud Pub/Sub und NATS sind beides hervorragende, bewährte Nachrichtenbroker. Ob Sie sich für den einen oder den anderen entscheiden, hängt oft von Ihren Anforderungen und Vorlieben ab. Ich persönlich würde Cloud Pub/Sub immer dann empfehlen, wenn die Anforderungen es zulassen, weil es ein hohes Maß an Integration mit anderen Google Cloud-Produkten bietet und weil Cloud Pub/Sub, da es von Google verwaltet wird, die Ingenieure von dem komplexen und zeitaufwändigen Prozess der Einrichtung und Wartung einer Drittanbieterlösung befreit.
Credits: Kopfzeilenbild von Luca Cavallin auf unsplash.com/@nylavak
Verfasst von
Luca Cavallin
Luca is a Software Engineer and Trainer with full-stack experience ranging from distributed systems to cross-platform apps. He is currently interested in building modern, serverless solutions on Google Cloud using Golang, Rust and React and leveraging SRE and Agile practices. Luca holds 3 Google Cloud certifications, he is part of the Google Developers Experts community and he is the co-organizer of the Google Cloud User Group that Binx.io holds with Google.
Unsere Ideen
Weitere Blogs
Contact



