2012-12-03 20 views
138

Nie rozumiem, kiedy używałbym SNS kontra SQS i dlaczego są one zawsze połączone?Jaka jest różnica między Amazon SNS a Amazon SQS?

+0

Co rozumiem z Twojego komentarza jest opisana w następujący przepływ .. jest to prawidłowe? Wydawca -> SNS -> SQL (przechowuje wiadomości w kolejce) -> Subskrybent (obecnie offline) – friendyogi

+1

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

Odpowiedz

226

SNS to rozprowadzany system subskrypcji pod adresem . Wiadomości są przesyłane do subskrybentów, gdy są wysyłane przez wydawców do SNS. SQS jest dystrybuowany w systemie w kolejce. Wiadomości NIE są przekazywane do odbiorników. Odbiorcy muszą uzyskać ankietę SQS, aby otrzymywać wiadomości. Wiadomości nie mogą być odbierane przez wiele odbiorników jednocześnie. Każdy odbiorca może otrzymać wiadomość, przetworzyć ją i usunąć. Inne odbiorniki nie otrzymują później tej samej wiadomości. Odpytywanie z natury wprowadza pewne opóźnienia w dostarczaniu wiadomości w SQS, w przeciwieństwie do SNS, gdzie wiadomości są natychmiast przekazywane do subskrybentów. SNS obsługuje kilka punktów końcowych, takich jak poczta elektroniczna, sms, punkt końcowy http i SQS. Jeśli chcesz, aby nieznana liczba i typ subskrybentów odbierać wiadomości, potrzebujesz SNS.

Nie musisz zawsze łączyć SNS i SQS. Możesz wysyłać wiadomości SNS do e-mail, sms lub http punktu końcowego oprócz SQS. Istnieją zalety łączenia SNS z SQS. Możesz nie chcieć, aby zewnętrzna usługa nawiązywała połączenia z twoimi hostami (zapora może blokować wszystkie połączenia przychodzące do twojego hosta z zewnątrz). Twój punkt końcowy może umrzeć z powodu dużej ilości wiadomości. E-maile i SMS-y mogą nie być szybkim wyborem przetwarzania wiadomości. Łącząc SNS z SQS, możesz odbierać wiadomości w swoim tempie. Umożliwia klientom pracę w trybie offline, tolerancję na awarie sieci i hosta. Osiągasz również gwarantowaną dostawę. Jeśli skonfigurujesz SNS do wysyłania wiadomości do punktu końcowego http lub wiadomości e-mail lub SMS, kilka błędów podczas wysyłania wiadomości może spowodować usunięcie wiadomości.

SQS służy głównie do rozłączania aplikacji lub integrowania aplikacji. Wiadomości mogą być przechowywane w SQS przez krótki czas (maksymalnie 14 dni). SNS dystrybuuje kilka kopii wiadomości do kilku subskrybentów. Na przykład powiedzmy, że chcesz replikować dane wygenerowane przez aplikację do kilku systemów pamięci masowej. Możesz użyć SNS i wysłać te dane do wielu subskrybentów, z których każdy powiela otrzymane wiadomości do różnych systemów pamięci masowej (s3, dysk twardy hosta, baza danych itp.).

+1

, więc w zasadzie, aby zaimplementować coś w rodzaju komunikatów powiadamiania push, zaleca się użycie SNS i SQS, więc popchnięcia z sns będą umieszczane w kolejce do momentu, aż użytkownik będzie tylko pobierać je z kolejki? Czy jest możliwe utworzenie kolejki na użytkownika? –

+0

Tak. Możesz mieć tylu subskrybentów, ile chcesz dla SNS. Możesz otrzymywać powiadomienia do wielu kolejek. – Srikanth

+0

Cześć przepraszam, widzę, że to pytanie jest stare, ale zastanawiam się, czy SQS nie zna i nie zapisuje wiadomości offline? Ponieważ APNS nie przechowuje wiadomości trybu offline, tylko najnowsza wiadomość. Czy wie, kiedy urządzenia IOS są w trybie offline i przechowuje wiadomości offline od razu? I wysłać je później, gdy urządzenia powrócą do trybu online? – John

15

Od AWS doc:

Amazon SNS umożliwia aplikacjom wysyłać wiadomości krytycznych czasowo do wielu abonentów poprzez mechanizm „push”, eliminując potrzebę okresowo sprawdzać czy „ankietę” aktualizacji.

Amazon SQS jest usługą Kolejka komunikatów wykorzystywana przez aplikacje rozproszone wymieniać wiadomości za pośrednictwem modelu sondowania i może być używany do DECOUPLE wysyłania i odbierania komponentów-bez konieczności każdy komponent być jednocześnie dostępne.

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

Powiązane problemy