Amazon Simple Queue Service (SQS) ist ein vollständig verwalteter Nachrichtendienst, der von Amazon Web Services (AWS) angeboten wird. Er ermöglicht es Entwicklern, hochgradig skalierbare, zuverlässige und belastbare Anwendungen zu erstellen, indem sie eine Microservice-Architektur verwenden.
Bevor wir weiter in das Thema einsteigen, sollten wir uns klarmachen, was ein Nachrichtendienst im Zusammenhang mit Cloud Computing ist: Hier ermöglicht diese Art von Dienst verschiedenen Komponenten einer verteilten Anwendung, miteinander zu kommunizieren, und zwar durch die Übertragung von Nachrichten. Diese Nachrichten können Verarbeitungsanfragen, Informationen, Benachrichtigungen usw. sein.
Was sind die Funktionen von SQS AWS?
Funktion | Beschreibung |
---|---|
Warteschlangen | Erstellen und Verwalten von Warteschlangen, in denen Nachrichten gespeichert werden. |
Nachrichten senden | Senden von Nachrichten an eine Warteschlange, die dann von anderen Komponenten oder Systemen verarbeitet werden können. |
Nachrichten empfangen | Empfangen von Nachrichten aus einer Warteschlange zur weiteren Verarbeitung. |
Nachrichten löschen | Löschen von Nachrichten aus einer Warteschlange, nachdem sie erfolgreich verarbeitet wurden. |
FIFO-Warteschlangen | Unterstützung für First-In-First-Out (FIFO)-Warteschlangen, die die Reihenfolge der Nachrichten beibehalten. |
Zugriffssteuerung | Festlegung von Zugriffsrechten auf Warteschlangen, um die Sicherheit und den Datenschutz zu gewährleisten. |
Batch-Verarbeitung | Sammeln von Nachrichten in Chargen und Verarbeitung mehrerer Nachrichten gleichzeitig, um die Effizienz zu verbessern. |
Fehlerbehandlung | Behandlung von fehlerhaften Nachrichten und Wiederholung von Verarbeitungsschritten bei Fehlern. |
Sichtbarkeitszeit | Konfiguration der Sichtbarkeitszeit für Nachrichten, um sicherzustellen, dass sie während der Verarbeitung nicht von anderen Komponenten abgerufen werden. |
Skalierbarkeit | Automatische Skalierung von Warteschlangen, um hohe Lasten zu bewältigen und eine zuverlässige Nachrichtenverarbeitung sicherzustellen. |
Verzögerungslieferung | Konfiguration einer Verzögerungszeit für die Auslieferung von Nachrichten, um zeitgesteuerte Aktionen zu ermöglichen. |
Überwachung und Metriken | Erfassung von Metriken und Überwachung der Leistung von Warteschlangen, um Engpässe zu identifizieren und die Systemleistung zu optimieren. |
Integrationen | Integration mit anderen AWS-Services wie Lambda, S3 und EC2, um eine nahtlose Verarbeitung von Nachrichten zu ermöglichen. |
Verschlüsselung | Verschlüsselung von Nachrichten während der Übertragung und Speicherung, um die Sicherheit der Daten zu gewährleisten. |
Die Funktionsweise von Amazon SQS verstehen
Ein verteiltes Nachrichtensystem besteht aus drei Hauptteilen: den Komponenten des verteilten Systems, der Warteschlange (die auf den Amazon SQS-Servern verwaltet wird) und den wartenden Nachrichten.
Im folgenden Beispiel hat unser System mehrere Producer (Nachrichtenproduzenten, diese Komponenten, die dafür zuständig sind, Nachrichten in die Warteschlange zu stellen) und Consumer (Nachrichtenkonsumenten, diese Komponenten, die dafür zuständig sind, die wartenden Nachrichten zu empfangen). Die Warteschlange speichert die Nachrichten auf den SQS-Servern.
Betrachten wir nun die folgende Abbildung:
➡️Der Producer (Komponente 1), sendet die Nachricht A in die Warteschlange, und diese Nachricht wird redundant auf die Amazon SQS-Server verteilt.
➡️Wenn Ein Consumer (Komponente 2) ist bereit, die Nachricht zu bearbeiten, d. h. er „verbraucht“ sie aus der Warteschlange, und die Nachricht A wird zurückgegeben, wodurch ein (einstellbarer) Sichtbarkeits-Timer gestartet wird.
➡️Während der Verarbeitung, bleibt es in der Warteschlange und wird für die Dauer des Timers nicht an die nächsten Empfangsanfragen weitergeleitet. Der Consumer entfernt die Nachricht A aus der Warteschlange, um zu verhindern, dass sie nach Ablauf des Sichtbarkeitszeitlimits erneut empfangen und verarbeitet wird.
In welchen Fällen kann SQS AWS verwendet werden?
Amazon SQS umfasst die folgenden verschiedenen Anwendungsfälle:
- Anwendungsentkopplung: Dies ermöglicht eine bessere Skalierbarkeit, Ausfallsicherheit und
- Isolation zwischen den Komponenten.
- Hintergrundverarbeitung: SQS kann Aufgaben im Hintergrund verarbeiten, um Serverressourcen freizugeben und damit die Gesamtleistung zu verbessern.
- Warteschlangenmanagement: Anwendungen können Nachrichten in ihrem eigenen Tempo verarbeiten, ohne dass eine Verarbeitung in Echtzeit erforderlich ist.
- Microservice-Architektur: SQS verbessert die Kommunikation zwischen verschiedenen Microservices.
- Verteilte Aufgabenverarbeitung: Die Möglichkeit, große Datenmengen zu verarbeiten, verbessert die Gesamtleistung der Anwendung und verkürzt die Verarbeitungszeiten
Amazon SQS versus Apache Kafka
Diese beiden Echtzeit-Messaging-Lösungen werden in Mikroservice-Architekturen und verteilten Anwendungen eingesetzt. Sie werden oft verglichen, haben aber dennoch einige wichtige Unterschiede:
➡️ In Bezug auf die Architektur wird SQS vollständig von Amazon verwaltet, sodass man sich nicht um alle Aspekte von Infrastruktur, Verfügbarkeit und Sicherheit kümmern muss. Kafka hingegen ist Open-Source und erfordert eine fortschrittlichere Konfiguration und Verwaltung.
➡️ Kafka wird oft bevorzugt, wenn ein sehr hoher Durchsatz und eine minimale Latenzzeit erforderlich sind. SQS bietet trotzdem eine Latenz im Bereich von einigen Millisekunden, ist aber im Allgemeinen langsamer als Kafka.
➡️ SQS ist auf hohe Skalierbarkeit ausgelegt, ist aber in seinen Funktionen stärker eingeschränkt als Kafka, das seinerseits sehr flexibel ist und in einer größeren Bandbreite von Anwendungsfällen eingesetzt werden kann.
➡️ Da SQS auf der Amazon-Infrastruktur aufgebaut ist, verfügt es über eine sehr hohe Sicherheit. Auch Kafka kann mit höheren Investitionen und Konfigurationen gesichert werden.
Wir kommen zu dem Schluss, dass SQS – wenig überraschend – besonders für AWS-basierte Anwendungen geeignet ist, während Kafka aufgrund seines Open-Source-Status flexibler und funktionsreicher ist, aber auch wesentlich mehr Investitionen in seine Konfiguration und Verwaltung erfordert.
Case Study: NASA
Wer kennt nicht die National Agency for Space and Aeronautics, kurz NASA?
Im Jahr 2017 führte die NASA die „NASA Image and Video Library“ ein, eine Inhaltsbibliothek, die es den Nutzern ermöglicht, nach NASA-Medieninhalten zu suchen, diese anzusehen und herunterzuladen. Die Einrichtung einer solchen Plattform stellte die Entwicklungsteams jedoch vor technische Herausforderungen, insbesondere bei der Verwaltung der Warteschlange für die Medienbearbeitung.
Um dieses Problem zu lösen, griff die NASA auf den Amazon SQS-Dienst zurück. Dadurch konnten sie die Verarbeitungsaufgaben von der Hauptwarteschlange entkoppeln, was den Druck auf die Server verringerte und die Leistung ihres Systems verbesserte. Die Integration mit anderen Amazon-Diensten ermöglichte der NASA auch die Nutzung von Amazon S3 zur Speicherung von Dateien sowie weiterer Dienste wie Amazon EC2, RDS und DynamoDB.
Dank Amazon SQS konnte die NASA die Herausforderungen ihrer Content-Plattform bewältigen, indem sie eine zuverlässige und skalierbare Messaging-Lösung für die Verwaltung der Medienverarbeitung bereitstellte.
Fazit
Amazon SQS ist ein zuverlässiger und skalierbarer asynchroner Nachrichtendienst, der es verteilten Anwendungen und Microservices ermöglicht, miteinander zu kommunizieren.
Er ist die ideale Wahl, wenn du die Kommunikation zwischen den verschiedenen Komponenten deiner Anwendung vereinfachen möchtest.
Si vous désirez en savoir un peu plus sur Amazon SQS, nous vous invitons à découvrir notre formation dédier à Amazon Web Services.