Direkt zum Inhalt

SQS vs. SNS: Die AWS Messaging Services verstehen

Lerne die Unterschiede zwischen Amazon SQS und SNS kennen und erfahre, wann du welchen Service für den Aufbau skalierbarer Cloud-Architekturen nutzen solltest.
Aktualisierte 23. Okt. 2024  · 15 Min. Lesezeit

Die Beherrschung von AWS kann eine Herausforderung sein, vor allem wenn es darum geht, die beiden Kerndienste von AWS zu verstehen: Amazon Simple Queue Service (SQS) und Amazon Simple Notification Service (SNS). 

Obwohl diese beiden Dienste ein wesentlicher Bestandteil von Cloud-Lösungen sind, werden sie oft missverstanden und falsch genutzt.

In diesem Artikel werde ich die Rollen von SQS und SNS aufschlüsseln, ihre Gemeinsamkeiten und Unterschiede herausarbeiten und zeigen, wie diese Dienste zusammen verwendet werden können, um leistungsstarke Cloud-Architekturen aufzubauen.

SQS vs. SNS: Kurze Antwort

Falls du es eilig hast, hier sind die wichtigsten Unterschiede:

  • SQS ist ein poll-basierter Message Queue Service zur Entkopplung von Diensten, der A2A-Kommunikation und Message Retention unterstützt.
  • SNS ist ein Push-basierter Benachrichtigungsdienst für Echtzeit-Nachrichten, der sowohl A2A- als auch A2P-Kommunikation unterstützt.

Lies weiter, um eine ausführlichere Erklärung zu erhalten, einschließlich Anwendungsfällen, Architekturdiagrammen und Best Practices!

Was ist Amazon SQS?

Amazon Simple Queue Service (SQS) ist ein vollständig verwalteter Warteschlangen-Service, der die Kommunikation zwischen Softwarekomponenten erleichtert. SQS nutzt Warteschlangen, um Microservices zu entkoppeln und ermöglicht es dir, asynchrone Workflows in deinen Anwendungen zu erstellen. 

SQS umfasst drei Kernkomponenten:

  • ProduzentInnen: Das sind Anwendungen, die Nachrichten an die Warteschlange senden.
  • Warteschlangen: Eine Warteschlange speichert Nachrichten, bis sie verarbeitet werden. Die Aufbewahrungsfrist für diese Nachrichten kann zwischen 60 Sekunden und 14 Tagen eingestellt werden. 
  • Verbraucherinnen und Verbraucher: Das sind Dienste, die die Nachrichten aus der Warteschlange empfangen. 

Amazon SQS Architektur Diagramm

Amazon SQS-Architekturdiagramm, einschließlich der Hauptkomponenten. Bild vom Autor.

SQS bietet zwei Arten von Nachrichtenwarteschlangen:

  • Standard-Warteschlangen bieten unbegrenzten Durchsatz, mindestens einmalige Zustellung (d.h. eine Nachricht wird immer zugestellt) und Best-Effort-Ordering.
  • FIFO-Warteschlangen bieten einen hohen Durchsatz, eine exakte Verarbeitung und eine First-in-First-out-Zustellung (d.h. die Nachrichten werden genau in der Reihenfolge empfangen, in der sie gesendet werden).

Weitere Informationen zu diesen Warteschlangen findest du in der AWS-Dokumentation.

Amazon SQS ist mit einer Nachrichtenpersistenz ausgestattet, die alle Nachrichten sicher speichert, bis sie verarbeitet werden, sodass kein Nachrichtenverlust entsteht. SQS erlaubt zunächst mehrere Wiederholungsversuche, um eine bestimmte Nachricht zu bearbeiten. Wenn eine Nachricht nach Ausschöpfung aller Versuche nicht bearbeitet werden kann, kannst du unbearbeitete Nachrichten in einer Dead-Letter-Warteschlange speichern, die dann überprüft und erneut bearbeitet werden kann .

Durch die Entkopplung von Anwendungen bietet Amazon SQS eine Reihe von Vorteilen. Es ermöglicht einen hohen Nachrichtendurchsatz und sorgt so für eine hohe Leistung auch bei größerer Verkehrslast. Außerdem bietet es eine unabhängige Skalierung, die sicherstellt, dass jeder Dienst je nach seinem individuellen Bedarf ausreichend Ressourcen erhält. Außerdem erhöht es die Sicherheit und Haltbarkeit, indem es Nachrichten verschlüsselt und auf mehreren Servern speichert.

Wenn du mehr über dieses Warteschlangensystem erfahren möchtest, solltest du dir unser umfassendes SQS-Tutorial ansehen.

Werde Dateningenieur

Werde ein Dateningenieur durch fortgeschrittenes Python-Lernen
Kostenloses Lernen beginnen

Was ist Amazon SNS?

Amazon Simple Notification Service (SNS) ist ein vollständig verwalteter Nachrichtenservice, der die Kommunikation von Anwendung zu Anwendung (A2A) und von Anwendung zu Person (A2P) unterstützt. Sie ist für Echtzeit-Benachrichtigungen konzipiert und liefert Nachrichten an Anwendungen und Endnutzer auf skalierbare und effiziente Weise. 

Ähnlich wie SQS unterstützt Amazon SNS die Persistenz von Nachrichten, indem es Benutzern ermöglicht Dead-Letter-Warteschlangen um Nachrichten zu speichern, die nicht verarbeitet werden können.

Amazon SNS verwendet ein Publish/Subscribe (Pub/Sub)-Messaging-Modell und besteht aus 3 Teilen:

  • Herausgeber: Ein Publisher ist ein System, das Nachrichten erstellt und an ein SNS-Thema sendet.
  • Thema: Ein Topic ist ein Zugangspunkt, der die Übermittlung von Nachrichten an mehrere Endpunkte ermöglicht.
  • Abonnent: Ein Abonnent oder Konsument ist ein Endpunkt, der eine Nachricht vom Topic erhält.

Schema der Pub-Sub-Systemarchitektur

Architekturdiagramm des SNS-Nachrichtenmodells. Bildquelle: AWS

SNS ist sehr leistungsfähig und kann Nachrichten an mehrere Abonnenten gleichzeitig senden. Für die A2A-Kommunikation kann SNS Nachrichten an AWS Lambda, Amazon Kinesis Firehose und sogar Amazon SQS liefern. Für die A2P-Kommunikation können SNS Nachrichten per Text, E-Mail oder Push-Benachrichtigung direkt an die Nutzer/innen senden. 

Wenn du AWS beherrschen und viele seiner Dienste integrieren möchtest, um optimale Lösungen zu erstellen, solltest du den Kurs AWS Cloud Technology and Services belegen. 

Funktionen wie Alarmsysteme, Fan-out-Architekturen und Echtzeit-Benachrichtigungen tragen zur hohen Robustheit und Zuverlässigkeit von Amazon SNS bei. Aufgrund seines hohen Nachrichtendurchsatzes und seiner Kapazität für A2A- und A2P-Kommunikation ist SNS oft ein integraler Bestandteil von ereignisgesteuerten Architekturen.

Kernunterschiede zwischen SQS und SNS

Die Entscheidung zwischen SQS und SNS erfordert ein solides Verständnis der Unterschiede zwischen diesen Nachrichtendiensten. In diesem Abschnitt werden die wichtigsten Kriterien für die Unterscheidung zwischen den beiden Gruppen beschrieben. 

Push vs. Poll-basiert

Amazon SQS verwendet ein Polling-System, bei dem die Verbraucher die Warteschlange regelmäßig abfragen, um nach neuen Nachrichten zu suchen.

Amazon SNS, ein Push-basiertes System, schickt automatisch Nachrichten an Abonnenten, sobald sie zu einem Thema veröffentlicht werden.

Empfängertypen

Amazon SQS unterstützt ausschließlich A2A-Kommunikation, sodass Nachrichten an andere AWS-Services wie AWS EC2, AWS Lambda, AWS RDS und AWS Redshift gesendet werden können. 

Amazon SNS unterstützt A2A- und A2P-Kommunikation und sendet Nachrichten an AWS-Dienste (z. B. AWS S3, AWS EC2) und Benutzerkontakte (z. B. SMS und E-Mail) als Abonnenten.

Nachrichtenaufbewahrung

Amazon SQS kann Nachrichten bis zu 14 Tage lang speichern, damit die Verbraucher genug Zeit haben, sie zu verarbeiten. Amazon SNS hingegen speichert keine Nachrichten und stellt sie den Abonnenten zu, sobald sie veröffentlicht werden.

Modell der Nachrichtenübermittlung

Amazon SQS verwendet ein Eins-zu-Eins-Modell, bei dem nur ein Konsument jede Nachricht verarbeitet. Auch wenn mehrere Verbraucher gleichzeitig Nachrichten abfragen, erhält nur ein Verbraucher eine bestimmte Nachricht. Während der betreffende Verbraucher eine Nachricht verarbeitet, nutzt SQS die Funktion visibility timeout, um diese Nachricht für andere Verbraucher unsichtbar zu machen .

Amazon SNS unterstützt ein Fan-out-Muster, bei dem dieselbe Nachricht zu einem Thema an alle Abonnenten gleichzeitig gesendet wird. Diese Abonnenten verarbeiten die empfangene Nachricht unabhängig voneinander.

Batching

Amazon SQS ermöglicht es den Nutzern, Nachrichten in Stapeln zu versenden, d.h. Nachrichten in Gruppen an Verbraucher zu senden. Die Losgröße kann in AWS konfiguriert werden. 

Amazon SNS unterstützt keine Stapelverarbeitung und erlaubt nur die Verarbeitung einer Nachricht zur gleichen Zeit. 

Die folgende Tabelle fasst diese wesentlichen Unterschiede zusammen:

Kriterien

Amazon SQS

Amazon SNS

Push- versus Poll-basiert

Umfrage-basiert: Verbraucher fragen die Warteschlange nach neuen Nachrichten ab

Push-basiert: Schickt automatisch Nachrichten an Abonnenten 

Empfängertypen

Unterstützt A2A-Kommunikation

Unterstützt A2A- und A2P-Kommunikation

Nachrichtenaufbewahrung

Speichert Nachrichten für bis zu 14 Tage

Es speichert keine Nachrichten

Modell der Nachrichtenübermittlung

Unterstützt One-to-One Messaging

Unterstützt Fan-out (one-to-many) Messaging

Batching

Unterstützt die Stapelverarbeitung von Nachrichten

Es unterstützt keine Stapelverarbeitung von Nachrichten

Wann wird SQS eingesetzt?

SQS ist die bevorzugte Option für eine Cloud-Architektur, wenn das Nachrichtenübermittlungssystem benötigt wird:

  • Ein Polling-System - können die Verbraucher wählen, wann sie Nachrichten abrufen wollen.
  • Asynchrone Verarbeitung - Dienste können Nachrichten unabhängig voneinander verarbeiten.
  • Nachrichtenaufbewahrung - Nachrichten können bis zu 14 Tage lang gespeichert werden.
  • Garantierte Nachrichtenzustellung - keine Nachrichten in der Warteschlange gehen verloren.
  • Batching - Dienste verarbeiten Nachrichten in Gruppen.

Nimm das folgende Beispiel aus der Praxis: Eine E-Commerce-Plattform möchte Kundenbestellungen bearbeiten, wozu die Daten zu den Bestellungen in einer RDS-Datenbank gespeichert werden. 

Architekturdiagramm eines Systems, das Amazon SQS zur Datenverarbeitung nutzt

Architekturdiagramm eines Systems, das Amazon SQS zur Verarbeitung von Daten nutzt - Bild von Autor.

In diesem Workflow reichen Kunden Bestellungen ein, die in die SQS-Warteschlange gelangen. Die Lambda-Funktion (d.h. der Konsument) fragt die Warteschlange ab, empfängt die Nachrichten und schreibt die Daten dann in die RDS-Datenbank.

Der Einsatz von SQS für diesen Anwendungsfall hat mehrere Vorteile. Da SQS den Prozess entkoppelt, können Kunden auch dann Bestellungen aufgeben, wenn die Datenbank nicht in Betrieb ist. Da SQS eine "at-least-once"-Zustellung anbietet, werden alle Bestellungen ohne das Risiko eines Nachrichtenverlusts bearbeitet. Und schließlich unterstützt SQS die Stapelverarbeitung, mit der Nachrichten in Gruppen verarbeitet werden können, was die Effizienz erhöht.

Amazon SNS würde hier nicht funktionieren, da es keine Nachrichten speichert und stattdessen sofort Nachrichten an die Lambda-Funktion pushen würde, unabhängig vom Status der Datenbank. Wenn also die Datenbank nicht mehr verfügbar ist, können Nachrichten verloren gehen. Da SNS keine Stapelverarbeitung unterstützt, würde es eine Nachricht nach der anderen verarbeiten, was eine weniger optimale Lösung wäre. 

Wann sollte man SNS nutzen?

SNS ist die bevorzugte Option für eine Cloud-Architektur, wenn das Nachrichtenübermittlungssystem benötigt wird:

  • Benachrichtigungen in Echtzeit - Nachrichten werden sofort und mit geringer Latenzzeit an die Abonnenten weitergeleitet.
  • Fan-out-Verteilung - Mehrere Abonnenten können die gleiche Nachricht gleichzeitig erhalten.
  • Mehrere Benachrichtigungsabonnenten - Nachrichten können an Anwendungen (z. B. AWS Lambda) und Endnutzer (z. B. E-Mail) gesendet werden.

Stell dir ein Szenario vor, in dem ein Entwickler die CPU-Auslastung seiner EC2-Instanz überwacht. Um sicherzustellen, dass die Auslastung niedrig bleibt, wollen sie die CPU-Auslastungsmetrik auf Cloudwatch überwachen und eine Benachrichtigung erhalten, sobald sie einen bestimmten Schwellenwert überschreitet.

Amazon SNS würde dem Entwickler bei der Entwicklung einer Lösung sehr helfen, da es Benachrichtigungen in Echtzeit sendet und sowohl A2A- als auch A2P-Prozesse unterstützt. Mithilfe des Fan-Out-Musters kann SNS sofort Benachrichtigungen an Lambda-Funktionen senden, die an der Behebung des Problems arbeiten können, und an den Entwickler per E-Mail, um ihn über den ausgelösten Alarm zu informieren. 

Architekturdiagramm eines Systems, das Amazon SNS zur Überwachung nutzt

Architekturdiagramm eines Systems, das Amazon SNS zur Überwachung nutzt - Bild des Autors. 

Amazon SQS wäre aufgrund seiner Nachrichtenspeicherung ein weniger effektives Werkzeug für diese Aufgabe. Wenn Entwickler/innen auf Schwellenwertüberschreitungen reagieren wollen, müssen sie Echtzeitwarnungen erhalten, was nicht möglich wäre, wenn die Nachrichten in Warteschlangen gespeichert würden. Da SQS ein Polling-System verwendet, wird außerdem nur dann auf die Nachrichten zugegriffen, wenn sie von den Konsumenten abgefragt werden, was die Latenzzeit erhöht. 

SQS und SNS gemeinsam nutzen: Das Beste aus beiden Welten

Amazon SQS und Amazon SNS haben unterschiedliche Funktionen und Eigenschaften, aber AWS-Benutzer können das Beste aus beiden Services herausholen, indem sie sie kombinieren, um ein effizientes, skalierbares und fehlertolerantes Messaging-System aufzubauen. 

Die Integration der beiden Dienste ist einfach, da SQS-Warteschlangen Abonnenten von SNS-Themen sein können. So kann SNS Echtzeit-Benachrichtigungen an SQS-Warteschlangen senden, woraufhin SQS alle Prozesse entkoppelt und die Zustellung der Nachrichten sicherstellt. 

Betrachte das folgende Beispiel: Ein AWS-Entwickler erstellt ein System zur Einreichung von Dokumenten, das Inhalte aus den von Endbenutzern eingereichten Dokumenten extrahiert. Dieses System muss für jedes eingereichte Dokument zwei Aufgaben erfüllen:

  1. Verarbeite das Dokument mit einer Textverarbeitungsanwendung.
  2. Sende eine Bestätigungs-E-Mail an den Endnutzer.

Der Entwickler kann SQS und SNS kombinieren, um eine effiziente Lösung zu schaffen:

Architekturdiagramm eines Systems, das SNS in Verbindung mit SQS nutzt

Architekturdiagramm eines Systems, das SNS in Verbindung mit SQS-image einsetzt, vom Autor.

In diesem Workflow wird eine Nachricht an das SNS-Topic gesendet, wenn ein Nutzer ein Dokument einreicht, das die Nachricht sofort an die Lambda-Funktion und die SQS-Warteschlange weiterleitet. Die Lambda-Funktion sorgt für den Versand der Bestätigungs-E-Mail, während die SQS-Warteschlange die Nachrichten verarbeitet, die von der EC2-Instanz abgefragt werden, auf der die Textverarbeitungsanwendung läuft. 

Fazit

Amazon SQS und SNS sind zentrale Dienste innerhalb des AWS-Ökosystems, die jeweils unterschiedliche Vorteile bieten. SNS bietet Echtzeit-Benachrichtigungen, während SQS eine zuverlässige Nachrichtenverarbeitung ermöglicht. 

Die ideale Messaging-Lösung für ein Problem kann SNS, SQS oder beides beinhalten. Wenn AWS-Entwickler die Besonderheiten beider Dienste kennen, können sie eine Messaging-Lösung entwickeln, die ihren individuellen Geschäftsanforderungen gerecht wird und Effizienz, Skalierbarkeit und Ausfallsicherheit gewährleistet.

Wenn du dein AWS-Wissen auf die nächste Stufe bringen möchtest, solltest du diese beiden Fortgeschrittenenkurse besuchen:

Oder bereite dich mit unserem Skill Track auf die AWS Cloud Practitioner Zertifizierung vor:

Lass dich für deine Traumrolle als Data Engineer zertifizieren

Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

Hol dir deine Zertifizierung
Timeline mobile.png

FAQs

Kann ich Amazon SQS und SNS mit anderen AWS-Diensten integrieren?

Ja, sowohl SQS als auch SNS lassen sich nahtlos in verschiedene AWS-Dienste integrieren. Du kannst zum Beispiel AWS Lambda-Funktionen mit Nachrichten von SQS oder SNS auslösen, Benachrichtigungen an Amazon S3 senden, wenn neue Dateien hochgeladen werden, oder Amazon CloudWatch verwenden, um die Leistung von SQS und SNS zu überwachen.

Wie kann ich die Zuverlässigkeit der Nachrichtenzustellung mit SQS und SNS sicherstellen?

Mit SQS kannst du Dead-Letter-Queues (DLQs) verwenden, um Nachrichten aufzufangen, die auch nach mehreren Versuchen nicht verarbeitet werden können, damit keine Daten verloren gehen. Für SNS kannst du Wiederholungsversuche oder Fallback-Mechanismen für den Fall konfigurieren, dass die Nachrichtenzustellung fehlschlägt, z. B. die Verwendung von SQS als Backup-Teilnehmer für ein SNS-Thema.

Kann ich SQS und SNS in einer einzigen Architektur kombinieren?

Ja, SQS und SNS können zu einer hybriden Messaging-Architektur kombiniert werden. SNS kann zum Beispiel Echtzeit-Benachrichtigungen an mehrere Verbraucher senden, einschließlich SQS-Warteschlangen. So profitierst du von Echtzeit-Benachrichtigungen (SNS) und einer zuverlässigen, verzögerten Verarbeitung (SQS).

Was sind die Preismodelle für SQS und SNS?

Sowohl SQS als auch SNS haben ein Preismodell, bei dem du für die Nutzung bezahlst. SQS erhebt Gebühren auf der Grundlage der Anzahl der Anfragen, der Datenübertragung und zusätzlicher Funktionen wie Long Polling. Die SNS-Gebühren richten sich nach der Anzahl der veröffentlichten Nachrichten und der Zustellmethode (z. B. E-Mail, SMS oder HTTP-Endpunkte). Die Überwachung deines Verbrauchs ist wichtig, um die Kosten zu kontrollieren, besonders bei hochfrequenten Anwendungen.

Wie kann ich die Leistung bei der Verwendung von SQS und SNS optimieren?

Um die Leistung zu optimieren, kannst du die Stapelverarbeitung mit SQS nutzen, um mehrere Nachrichten auf einmal zu senden und zu verarbeiten und so API-Anfragen und Kosten zu reduzieren. Mit SNS kannst du sicherstellen, dass deine Abonnenten einen hohen Durchsatz bewältigen können, indem du eine automatische Skalierung für deine Verarbeitungsdienste (wie Lambda oder EC2) einrichtest, um Verkehrsspitzen effizient zu bewältigen.

Themen

Lerne mehr über AWS mit diesen Kursen!

Zertifizierung verfügbar

Kurs

Einführung in AWS

2 hr
13.3K
Entdecke die Welt der Amazon Web Services (AWS) und verstehe, warum sie an der Spitze des Cloud Computings stehen.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow