Статьи

Сервисы обмена сообщениями AWS: выбор правильного сервиса

1. Сервисы обмена сообщениями AWS

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

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

2. Amazon SQS (служба простой очереди)

Amazon SQS — это веб-сервис распределенной очереди для асинхронного обмена сообщениями между программными системами. SQS используется для разработки крупномасштабных распределенных систем с разделенными компонентами, не беспокоясь о создании очереди и управлении ею. SQS выпускается в двух вариантах: Standard и FIFO («первым пришел — первым вышел»). Очередь FIFO поддерживает порядок сообщений, которые производятся и потребляются, и обеспечивает механизм доставки «один раз». Стандартная очередь пытается сохранить заказ, но является гибкой и обеспечивает по крайней мере однократную доставку. Сообщение в стандартной очереди может доставляться более одного раза, а стандартная очередь обеспечивает высокую пропускную способность.

По мере роста объема ваших запросов Amazon SQS масштабируется по горизонтали. Сообщения в SQS зашифрованы с помощью шифрования на стороне сервера и защищены в течение всего срока их службы в очереди.

Если ваше приложение нуждается в более быстрой обработке сообщений, но не заботится о порядке сообщений или повторной доставке сообщений, стандартная очередь является лучшим вариантом. Для гарантированного заказа и точной доставки используйте очередь FIFO. Когда потребитель получает сообщение и обрабатывает его, оно остается в очереди до тех пор, пока оно не будет удалено явно или не истечет время хранения сообщения. Amazon SQS устанавливает тайм-аут видимости для сообщения (30 секунд по умолчанию и максимум 12 часов), чтобы другие потребители не могли снова обработать то же сообщение.

SQS лучше всего подходит для обмена сообщениями один на один, отправки электронных писем, обработки форм и файлов.

Сервисы обмена сообщениями AWS - интеграция SQS
Интеграция SQS

2.1 Ограничения SQS

  • Размер сообщения ограничен 256 КБ
  • По умолчанию сообщения в SQS будут удалены через 4 дня, но это может быть продлено до 14 дней
  • В стандартном SQS сообщение может быть доставлено более одного раза

2.2 SQS Best Practices

  • В зависимости от того, сколько времени занимает обработка сообщения, увеличьте время ожидания видимости сообщения до максимального времени, необходимого для обработки и удаления сообщения.
  • Если вы не знаете, сколько времени занимает обработка сообщения из SQS, создайте тактовый сигнал для процесса потребителя и соответственно увеличьте время ожидания видимости.
  • Длительный опрос помогает снизить стоимость Amazon SQS. При реализации длинного опроса используйте один поток на очередь вместо одного потока для всех очередей. Использование одного потока для всех очередей может привести к тому, что ваше приложение не сможет обрабатывать сообщения, доступные в других очередях.
  • Используйте уникальные идентификаторы сообщений для предотвращения обработки того же сообщения потребителем.

3. Amazon SNS (служба простых уведомлений)

Amazon SNS — это полностью управляемая асинхронная система push-уведомлений «Публикация / подписка», в которой производитель сообщений публикует сообщение, а несколько подписчиков получают сообщения. Модель обмена сообщениями Pub / Sub используется для разделения приложений и повышения производительности, масштабируемости и надежности приложений. Сообщения, отправляемые в SNS, будут сохраняться в нескольких зонах доступности, чтобы предотвратить потерю сообщений. SNS отправляет сообщение с URL-адресом подписки всем подписчикам, и подписчики должны подтвердить подписку, чтобы получить сообщение.

SNS позволяет отправлять сообщения нескольким службам, включая SQS, Lambda, HTTP (s), электронную почту, SMS и т. Д. Amazon SNS можно использовать в сочетании с SQS, поэтому сообщение, опубликованное в SNS, будет отправлено каждому SQS и потребителю каждого из них. SQS получит сообщение.

Сервисы обмена сообщениями AWS - подписчики SNS
Подписчики SNS

Amazon SNS предоставляет зашифрованные темы для защиты ваших сообщений от несанкционированного и анонимного доступа. Когда сообщение публикуется в зашифрованной теме, сообщения немедленно шифруются с использованием алгоритма AES-GCM и мастер-ключа клиента, выданного с помощью службы управления ключами. Сообщения расшифровываются по мере их доставки на конечные точки подписки. Перед удалением темы SNS убедитесь, что все подписки на тему удалены. Используя SNS, можно отправить сообщение на различные платформы, такие как iOS, Android, Java, Node Js, Python, .NET и т. Д. Из AWS.

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

3.1 Сообщение SNS

К сообщению, отправленному в тему SNS, будут прикреплены следующие части.

  • MessageId — уникальный идентификатор сообщения
  • Отметка времени — отметка времени создания сообщения
  • TopicArn — тема, к которой опубликовано сообщение
  • Тип — Тип доставки
  • UnsubscribeUrl — Ссылка на отписку от этой темы
  • Сообщение — Сообщение Полезная нагрузка
  • Тема — Поле темы
  • Подпись — Base64 кодированная подпись сообщения
  • Версия подписи — версия подписи SNS

3.2 Ограничения SNS

  • Сообщение от SNS может быть доставлено более одного раза
  • В случае отказа абонента сообщение может быть доставлено в течение заданного количества раз.

4. Amazon MQ

Amazon MQ — это служба управляемых сообщений для Apache ActiveMQ. AWS управляет подготовкой, настройкой, исправлением и обслуживанием ActiveMQ. Существующие приложения можно легко перенести и подключить к Amazon MQ с помощью стандартных API и протоколов, таких как JMS, NMS, AMQP, STOMP, MQTT и WebSocket.

Amazon MQ обеспечил высокую доступность и долговечность сообщений. Задержка в Amazon MQ очень мала (одна цифра миллисекунды) между производителем сообщения и потребителем. Сообщения, помещаемые в Amazon MQ, всегда сохраняются с избыточностью в нескольких зонах доступности. Amazon MQ поддерживает распределенные транзакции. Имя брокера должно быть уникальным в учетной записи AWS, и для каждого брокера существует ограничение в 200 ГБ.

Лямбда-функция может запускаться, когда сообщение помещается в Amazon MQ. В гибридной облачной среде ActiveMQ в локальном центре обработки данных можно интегрировать с Amazon MQ в облаке для обмена сообщениями. Обратитесь к этой документации для подключения вашего Java-приложения к Amazon MQ, а также для создания производителя и потребителя сообщений.

Сервисы обмена сообщениями AWS - интеграция с Amazon MQ
Интеграция с Amazon MQ

4.1 Лучшие практики Amazon MQ

  • Amazon MQ шифрует сообщения в покое и в пути, используя надежно управляемые ключи шифрования. Настоятельно рекомендуется также использовать клиентское шифрование.
  • Чтобы оптимизировать Amazon MQ для медленных потребителей, установите для атрибута concurrentStoreAndDispatchQueues значение false .
  • Используйте правильный тип экземпляра брокера для лучшей пропускной способности
  • В случае приложений с несколькими производителями и с несколькими потребителями может быть крайне неэффективно создавать большое количество соединений по требованию для нескольких производителей. Используйте пул соединений вместо использования класса PooledConnectionFactory . Не используйте PooledConnectionFactory для потребителей сообщений.

4.2 Настройка пула соединений (из документации AWS)

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
// Create a connection factory.
final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint);
 
// Pass the username and password.
connectionFactory.setUserName(activeMqUsername);
connectionFactory.setPassword(activeMqPassword);
 
// Create a pooled connection factory.
final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
pooledConnectionFactory.setMaxConnections(10);
 
// Establish a connection for the producer.
final Connection producerConnection = pooledConnectionFactory.createConnection();
producerConnection.start();

4.3 Amazon MQ Ограничения

  • Количество брокеров по типу экземпляра брокера для каждого аккаунта AWS ограничено 20
  • Количество групп безопасности, ограниченное одним брокером, составляет 5
  • Емкость хранилища на одного брокера ограничена 200 ГБ

5. Amazon Kinesis

Amazon Kinesis — это полностью управляемый веб-сервис для обработки больших данных в режиме реального времени. Kinesis помогает собирать, обрабатывать и анализировать потоковые данные в реальном времени, чтобы получить представление о них. Используя Kinesis, данные можно анализировать по мере их поступления и мгновенно реагировать. С помощью Kinesis можно анализировать видео, аудио, журналы приложений, потоки кликов на веб-сайте и телеметрию IoT. Amazon Kinesis обладает высокой масштабируемостью и может обрабатывать любое количество потоковых данных и обрабатывать данные из сотен и тысяч источников с минимальной задержкой. Kinesis способен обрабатывать терабайты данных в час из различных потоков данных. Кинезис следит за порядком сообщений.

Сервисы обмена сообщениями AWS - интеграция Kinesis
Kinesis Integration

Amazon Kinesis лучше всего подходит для случаев использования, таких как сбор и анализ данных датчиков, таких как датчики температуры, влажности и т. Д. Он также полезен для надежного приема всех рыночных данных и построения аналитики в реальном времени.

5.1 Кинезис Ограничения

  • Размер блоба данных ограничен 1 МБ
  • По умолчанию сообщение удаляется из потока через 24 часа, но может быть продлено до 7 дней.

6. Amazon Pinpoint

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

Amazon Pinpoint можно интегрировать с мобильными и веб-приложениями, чтобы получить представление о том, как клиенты взаимодействуют с вашими приложениями. Он также помогает отправлять целевые сообщения электронной почты, SMS, push-уведомления и голосовые сообщения, а также отслеживать, как клиенты реагируют на ваши сообщения, т.е. количество доставленных, открытых или нажатых сообщений. Это полезно для отправки рекламного или образовательного контента для привлечения и удержания ваших пользователей.

Вот некоторые примеры использования Amazon Pinpoint:

  • Агрегирование данных по всем кампаниям
  • Демографические диаграммы, содержащие информацию об устройствах, на которых установлено ваше приложение
  • Аналитика о вовлеченности пользователей и показателях кампании
  • Аналитика о времени использования приложения и удержании клиентов
  • Диаграммы доходов, которые предоставляют подробную информацию о покупках клиентов и доходах от них
  • Аналитика аутентификации пользователя

7. Amazon IoT Broker

Брокер сообщений AWS IoT — это управляемая служба брокера издателя / подписчика с высокой пропускной способностью, которая позволяет отправлять и получать сообщения в IoT и из AWS. Клиент отправляет сообщение AWS IoT в тему. Этот брокер сообщений отправляет сообщение всем зарегистрированным клиентам по этой теме. Используя AWS IoT, сообщения между всеми вашими IoT-устройствами могут передаваться безопасно с низкой задержкой. В зависимости от объема сообщения брокер сообщений может автоматически масштабироваться. AWS IoT поддерживает системы обмена сообщениями один на один или широковещательные уведомления один на миллион. Дополнительные функции IoT AWS перечислены в документации AWS .