Warteschlangentypen
Amazon SQS bietet zwei Warteschlangentypen für unterschiedliche Anwendungsanforderungen an:
Standardwarteschlangen
Unbegrenzter Durchsatz: Standardwarteschlangen unterstützen eine fast unbegrenzte Anzahl an Transaktionen pro Sekunde (TPS) pro API-Aktion.
Mindestens einmalige Lieferung: Eine Nachricht wird mindestens einmal übermittelt; gelegentlich wird eine Nachricht mehr als einmal gesendet.
Bestmögliche Einhaltung von Reihenfolgen: Mitunter werden Nachrichten in der falschen Reihenfolge zugestellt.
FIFO-Warteschlangen
Hoher Durchsatz: FIFO-Warteschlagen unterstützen standardmäßig bis zu 3 000 Nachrichten pro Sekunde mit Stapelverarbeitung oder bis zu 300 Nachrichten pro Sekunde (300 Vorgänge zum Senden, Empfangen oder Löschen pro Sekunde) ohne Stapelverarbeitung. Wenn Sie einen höheren Durchsatz benötigen, können Sie den Hochdurchsatzmodus für FIFO auf der Amazon-SQS-Konsole aktivieren. Dieser unterstützt bis zu 70 000 Nachrichten pro Sekunde ohne Stapelverarbeitung und sogar noch mehr mit Stapelverarbeitung. Eine detaillierte Aufschlüsselung der FIFO-Kontingente für den Hochdurchsatzmodus pro Region finden Sie in der AWS Dokumentation.
Exactly-Once-Verarbeitung: Eine Nachricht wird einmal gesendet und bleibt solange verfügbar, bis der Kunde sie gelesen und gelöscht hat. Zur Warteschlange werden keine Duplikate hinzugefügt.
First-in-First-out-Übermittlung: Die Reihenfolge, in der Nachrichten gesendet und empfangen werden, wird strikt beibehalten (First-in-First-out).
Sie können Standardwarteschlangen für Nachrichten in vielen Bereichen einsetzen, sofern Ihre Anwendung Nachrichten verarbeiten kann, die mehr als einmal und nicht der Reihenfolge nach eingehen, z. B.:
- Echtzeit-Benutzeranfragen von intensiven Hintergrundaufgaben entkoppeln: Benutzer können Medien hochladen, während diese skaliert und verschlüsselt werden.
- Aufgaben mehreren Worker-Knoten zuweisen: Eine hohe Anzahl von Kreditkarten-Validierungsanfragen können verarbeitet werden.
- Stapelnachrichten für zukünftige Verarbeitung: Mehrere Einträge können für das Hinzufügen zu einer Datenbank geplant werden.
FIFO-Warteschlangen sollen die Nachrichtenübermittlung zwischen Anwendungen verbessern, wenn die Reihenfolge von Operationen und Ereignissen entscheidend ist oder wenn keine Duplikate zulässig sind, z. B.:
- Sicherstellen, dass vom Benutzer eingegebene Befehle in der richtigen Reihenfolge ausgeführt werden.
- Anzeigen des richtigen Produktpreises, indem Preisänderungen in der richtigen Reihenfolge gesendet werden.
- Vermeiden, dass sich ein Kursteilnehmer für einen Kurs anmeldet, bevor dieser sich für ein Konto registriert hat.
Funktionalität
- Unbegrenzte Warteschlangen und Nachrichten: Erstellen von unbegrenzten Amazon SQS-Warteschlangen mit einer unbegrenzten Anzahl von Nachrichten in jeder beliebigen Region
- Nutzlastgröße: Die Nachrichtennutzlasten können bis zu 256 KB groß sein und Text in einem beliebigen Format enthalten. Jeder 64-KB-Block der Nutzdaten wird als 1 Anforderung in Rechnung gestellt. Ein einzelner API-Aufruf mit einer Nutzdatengröße von 256 KB wird als vier Anforderungen in Rechnung gestellt. Um Nachrichten zu senden, die größer sind als 256 KB, können Sie Amazon SQS Extended Client Library für Java nutzen. Dabei wird Amazon Simple Storage Service (S3) verwendet, um die Nachrichtennutzlast zu speichern. Mit SQS wird eine Referenz bezüglich der Nachrichtennutzlast gesendet.
- Stapel: Senden, empfangen oder löschen von Nachrichten in Stapeln von bis zu 10 Nachrichten oder 256 KB. Stapel kosten genauso viel wie einzelne Nachrichten, was heißt, dass ihre Nutzung für Kunden noch wirtschaftlicher sein kann.
- Long Polling: Mit dieser Methode werden irrelevante Abfragen verringert, wodurch Sie Kosten minimieren und neue Nachrichten schnellstmöglich empfangen können. Wenn Ihre Warteschlange leer ist, warten Long Poll-Anforderungen bis zu 20 Sekunden auf den Eingang der nächsten Nachricht. Long Poll-Anforderungen kosten dasselbe wie herkömmliche Anforderungen.
- Nachrichten werden bis zu 14 Tage lang in Warteschlangen aufbewahrt.
- Gleichzeitiges Senden und Lesen von Nachrichten.
- Sperren von Nachrichten: Wenn eine Mitteilung empfangen wird, wird sie „gesperrt“, während sie verarbeitet wird. Auf diese Weise wird verhindert, dass andere Computer dieselbe Mitteilung gleichzeitig verarbeiten. Schlägt die Verarbeitung der Mitteilung fehl, läuft die Sperre ab und die Mitteilung ist wieder verfügbar.
- Freigeben von Warteschlangen: Sie können Amazon SQS-Warteschlagen anonym oder für bestimmte AWS-Konten völlig sicher freigeben. Die Freigabe von Warteschlangen kann außerdem nach IP-Adresse und Tageszeit beschränkt werden.
- Serverseitige Verschlüsselung (SSE): Dient zum Schützen der Nachrichteninhalte in Amazon SQS-Warteschlangen mit Schlüsseln, die im AWS Key Management Service (AWS KMS) verwaltet werden. Die Nachrichten werden direkt beim Eingang in Amazon SQS verschlüsselt. Sie werden verschlüsselt gespeichert. Amazon SQS entschlüsselt Nachrichten nur, wenn sie an den autorisierten Kunden gesendet werden.
- Warteschlangen für unzustellbare Nachrichten (DLQ):Verwalten Sie Nachrichten, die von einem Konsumenten nicht erfolgreich verarbeitet wurden, mit Warteschlangen für unzustellbare Nachrichten (DLQs). Wenn die maximale Empfangsanzahl für eine Nachricht überschritten wird, verschiebt Amazon SQS die Nachricht in die DLQ, die der ursprünglichen Warteschlange zugeordnet ist. Die Warteschlangen für unzustellbare Nachrichten müssen vom selben Typ wie die ursprüngliche Warteschlange sein (Standard oder FIFO). Sie können Nachrichten in DLQs aufrufen, um herauszufinden, warum Sie der Konsument nicht erhalten hat. Sobald das Problem behoben ist, können Sie die Nachrichten aus der DLQ in die entsprechende Quell-Warteschlange verschieben.
Einsatz von Amazon SQS mit anderen AWS-Infrastruktur-Web-Services
Amazon-SQS-Nachrichtenwarteschlange kann auch mit anderen AWS-Services wie zum Beispiel Amazon Redshift, Amazon DynamoDB, Amazon Relational Database Service (RDS), Amazon Elastic Compute Cloud (EC2), Amazon Elastic Container Service (ECS), AWS Lambda und Amazon S3 verwendet werden, um verteilte Anwendungen skalierbar zu machen und ihre Verlässlichkeit zu steigern. Es folgen einige gängige Entwurfsmuster:
- Verarbeitungswarteschlangen: Dienen zum Entkoppeln von Komponenten einer verteilten Anwendung, die ggf. nicht gleichzeitig denselben Verarbeitungsumfang leisten.
- Puffer- und Stapeloperationen: Dienen zum Hinzufügen von Skalierbarkeit und Zuverlässigkeit zu Ihrer Architektur und zum Abfedern vorübergehender Volumenspitzen, ohne Nachrichten zu verlieren oder die Latenz zu verlängern.
- Auslagerung von Anforderungen: Dient zum Verschieben langsamer Vorgänge aus interaktiven Anforderungspfaden durch Einreihen der Anforderung in eine Warteschlange.
- Fanout: Kombinieren Sie SQS mit Simple Notification Service (SNS), um parallel identische Kopien einer Nachricht an mehrere Warteschlangen zu senden.
- Priorität: Verwenden von separaten Warteschlangen, damit für die vorhandene Arbeit Prioritäten gesetzt werden können.
- Skalierbarkeit: Da Nachrichtenwarteschlangen Prozesse entkoppeln, kann die Sende- bzw. Empfangsrate der Nachrichten leicht skaliert werden – durch das einfache Hinzufügen eines weiteren Prozesses.
- Resilienz: Wenn ein Teil des Systems ausfällt, ist nicht automatisch das komplette System betroffen. Nachrichtenwarteschlangen entkoppeln Komponenten in einem System. Wenn ein Prozess, der Nachrichten aus einer Warteschlange liest, fehlschlägt, können trotzdem weiterhin Nachrichten zu dieser Warteschlange hinzugefügt werden. Sie werden verarbeitet, wenn das System wiederhergestellt ist.
Vorgesehene Verwendung und Einschränkungen
Die Nutzung dieses Service unterliegt der Amazon Web Services-Kundenvereinbarung.
Weitere Informationen zu den Preisen von Amazon SQS