В чем разница между Amazon SNS и Amazon SQS?


Я не понимаю, когда я буду использовать SNS против SQS, и почему они всегда связаны вместе?

4 189

4 ответа:

SNS - это распределенная публикации-подписки

от aws doc:

Amazon SNS позволяет приложениям отправлять сообщения, критичные по времени множественные подписчики через механизм "нажима", исключая потребность периодически проверять или" опрашивать " обновления.

Amazon SQS-это служба очереди сообщений, используемая распределенными приложениями для обмена сообщениями через модель опроса, и может быть использован для отделите отправляющие и принимающие компоненты-не требуя каждого компонента одновременно доступный.

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

Ниже приведены некоторые из различий

Тип Объекта

  • SQS: очередь (аналогично JMS)
  • SNS: тема (Pub / Sub system)

потребление сообщением

  • SQS: механизм вытягивания-опрос потребителей и вытягивание сообщений из SQS
  • SNS: нажимной механизм-SNS толкает сообщения к потребителям

Use Case

  • SQS : Развязка 2 приложений и возможность параллельной асинхронной обработки
  • SNS: Fanout-это означает, что одно и то же сообщение обрабатывается несколькими способами

настойчивость

  • SQS: сообщения сохраняются в течение некоторого (настраиваемого) времени нет потребителя
  • SNS: нет настойчивости. Какой бы потребитель ни присутствовал в момент прибытия сообщения, получите сообщение и сообщение будет удалено. Если нет потребителей доступно, после чего сообщение будет потеряно.

Потребительского Типа

  • SQS : все потребители должны быть идентичны и делать и, следовательно, обрабатывать сообщение таким же образом
  • SNS: все потребители обрабатывают сообщения по-разному

образцы заявлений

  • ЗК : основы работы. Где рабочие места представлены в SQS, а потребители на другом конце могут обрабатывайте задания асинхронно. И если частота задания увеличивается, то количество потребителей может быть увеличено для параллельной обработки
  • SNS: обработка изображений. Если кто-то загружает изображение в S3, затем пометьте это изображение, создайте миниатюру, а также отправьте электронное письмо с благодарностью. В этом случае S3 может отправлять уведомления в тему SNS, а 3 потребителя могут быть прикреплены к теме SNS. 1-й водяной знак изображения, 2-й создает эскиз, а 3-й отправляет благодарственное письмо. Все они получение одного и того же сообщения (URL изображения) и выполнение их соответствующей обработки параллельно.

AWS SNS - это сеть подписчиков издателя, в которой подписчики могут подписываться на темы и получать сообщения всякий раз, когда издатель публикует эту тему.

AWS SQS - это служба очереди, которая хранит сообщения в очереди. SQS не может доставлять сообщения, где требуется внешняя служба (lambda, EC2 и т. д.) Для опроса SQS и получения сообщений от SQS.

SNS и SQS может использоваться вместе для нескольких причины.

  1. там могут быть различные виды абонентов, где некоторые нуждаются в немедленная доставка сообщений, где некоторые из них потребуют сообщения для сохранения, для последующего использования через опрос. Смотрите это ссылке.

  2. " Fanout Скороговоркой."Это для асинхронной обработки сообщения. Когда сообщение публикуется в SNS, оно может распространяться к нескольким очередям SQS параллельно. Это может быть здорово, когда погрузка миниатюры в приложении параллельно, когда изображения создаются опубликованный. Смотрите это ссылке.

  3. постоянное хранение. Когда служба, которая будет обрабатывать сообщение не является надежным. В таком случае, если SNS толкает a уведомление для службы, и эта служба недоступна, а затем уведомление будет потеряно. Поэтому мы можем использовать SQS как постоянный хранение и после этого обрабатывает его потом.