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

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

4 ответов


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


из aws doc:

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

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

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


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

Тип Объекта

  • SQS: очередь (аналогично JMS)
  • SNS: тема (паб/подсистема)

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

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

Пример Использования

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

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

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

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

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

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

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

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

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

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

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

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

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