2012-12-03 14 views
138

Ich verstehe nicht, wenn ich SNS gegen SQS verwenden würde, und warum sind sie immer zusammen gekoppelt?Was ist der Unterschied zwischen Amazon SNS und Amazon SQS?

+0

Was ich aus Ihrem Kommentar verstehen, ist in folgenden Fluss beschrieben .. ist es richtig? Publisher -> SNS -> SQL (Nachrichten in Warteschlange halten) -> Abonnent (derzeit offline) – friendyogi

+1

https://aws.amazon.com/blogs/aws/queue-and-notifications-now-best-friends/ –

Antwort

226

SNS ist ein verteiltes publish-subscribe System. Nachrichten sind Pushed an Abonnenten wie und wenn sie von Publishern an SNS gesendet werden. SQS ist verteilt Warteschlange System. Nachrichten werden NICHT an Empfänger gesendet. Empfänger müssen Poll SQS, um Nachrichten zu empfangen. Nachrichten können nicht gleichzeitig von mehreren Empfängern empfangen werden. Jeder Empfänger kann eine Nachricht empfangen, verarbeiten und löschen. Andere Empfänger erhalten später nicht die gleiche Nachricht. Das Polling führt von Natur aus zu einer gewissen Latenz bei der Nachrichtenzustellung in SQS, im Gegensatz zu SNS, bei der Nachrichten sofort an Abonnenten übermittelt werden. SNS unterstützt mehrere Endpunkte wie E-Mail, SMS, HTTP-Endpunkt und SQS. Wenn Sie möchten, dass unbekannte Nummern und Arten von Teilnehmern Nachrichten empfangen, benötigen Sie SNS.

Sie müssen SNS und SQS nicht immer koppeln. Sie können festlegen, dass SNS Nachrichten an E-Mail, SMS oder HTTP-Endpunkt sendet, außer an SQS. Die Kopplung von SNS mit SQS hat Vorteile. Möglicherweise möchten Sie nicht, dass ein externer Dienst Verbindungen mit Ihren Hosts herstellt (die Firewall blockiert möglicherweise alle eingehenden Verbindungen von außen zu Ihrem Host). Ihr Endpunkt kann aufgrund der großen Anzahl an Nachrichten einfach absterben. E-Mail und SMS sind möglicherweise nicht Ihre Wahl der Verarbeitung von Nachrichten schnell. Durch die Kopplung von SNS mit SQS können Sie Nachrichten in Ihrem Tempo empfangen. Es ermöglicht Clients, offline zu sein, tolerant gegenüber Netzwerk- und Hostfehlern. Sie erreichen auch eine garantierte Zustellung. Wenn Sie SNS so konfigurieren, dass Nachrichten an einen HTTP-Endpunkt, eine E-Mail oder eine SMS gesendet werden, können mehrere Fehler beim Senden der Nachricht dazu führen, dass die Nachricht gelöscht wird.

SQS wird hauptsächlich verwendet, um Anwendungen zu entkoppeln oder Anwendungen zu integrieren. Nachrichten können für kurze Zeit (maximal 14 Tage) in SQS gespeichert werden. SNS verteilt mehrere Kopien der Nachricht an mehrere Abonnenten. Nehmen wir beispielsweise an, Sie möchten Daten, die von einer Anwendung generiert wurden, auf mehrere Speichersysteme replizieren. Sie könnten SNS verwenden und diese Daten an mehrere Abonnenten senden, von denen jeder die empfangenen Nachrichten an verschiedene Speichersysteme repliziert (s3, Festplatte auf Ihrem Host, Datenbank usw.).

+1

im Grunde, um so etwas wie Push-Benachrichtigungen zu implementieren, wird empfohlen, SNS und SQS zu verwenden, so dass die Pushs mit SNS in die Warteschlange gestellt werden, bis der Benutzer sie nur aus der Warteschlange abrufen soll? Ist es möglich, eine Warteschlange pro Benutzer zu erstellen? –

+0

Ja. Sie können für SNS beliebig viele Abonnenten haben. Sie können Benachrichtigungen an mehrere Warteschlangen senden lassen. – Srikanth

+0

Hallo sorry, ich sehe diese Frage ist alt, aber ich frage mich, über SQS weiß es und speichern Offline-Nachrichten? Da APNS keine Offline-Nachrichten speichern, wird nur die neueste Nachricht angezeigt. Wüsste es, wenn die IOS-Geräte offline sind und speichert die Offline-Nachrichten sofort? Und senden Sie es später, wenn die Geräte wieder online sind? – John

15

Von aws doc:

Amazon SNS ermöglicht es Anwendungen, zeitkritische Nachrichten an mehrere Teilnehmer durch einen „Push“ Mechanismus, wodurch die Notwendigkeit periodisch zu überprüfen oder „Umfrage“ nach Updates zu senden.

Amazon SQS ist ein Nachrichtenwarteschlangendienst von verteilten Anwendungen verwendet, um Nachrichten über ein Abfragemodells auszutauschen, und kann zu entkoppeln Sende- und Empfangskomponenten, ohne verwendet werden, nach denen jede Komponente gleichzeitig zur Verfügung stehen.

http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html

Verwandte Themen