Декоплинг с помощью сервисов обмена сообщениями AWS

Разработка приложений на AWS

Ricardo Sueiras

Principal Technologist

Основы Amazon SQS

 

sqs overview

  • Обрабатывает всплески трафика независимо от производителей.
  • Управляемая очередь сообщений для асинхронного обмена.
  • Производители отправляют сообщения в очередь.
  • Потребители извлекают сообщения из очереди.
  • Сообщения хранятся до получения потребителем.
  • Хранение: 4 дня по умолчанию, максимум 14 дней.
  • Потребители опрашивают очередь и обрабатывают в своём темпе.
Разработка приложений на AWS

Видимость сообщений

  • После прочтения сообщение становится невидимым.
  • Таймаут видимости определяет, как долго оно скрыто.
  • Если обработка завершилась неудачей и сообщение не удалено:
    • Оно снова становится видимым.
    • Его можно повторно обработать.
  • Таймаут видимости: 30 секунд по умолчанию.
  • Максимальный таймаут видимости — 12 часов.

 

message visibility

Разработка приложений на AWS

Размер сообщений

 

image size

  • Размер сообщения — до 256 КБ.
  • Библиотека SQS Extended Client позволяет отправлять более крупные сообщения.
  • Большие данные сохраняются в Amazon S3.
  • В сообщение включается ссылка на объект в S3.
Разработка приложений на AWS

Короткий опрос

  • Стратегия опроса влияет на стоимость и эффективность.
  • Короткий опрос используется по умолчанию.
  • Запрашивает подмножество серверов SQS, возвращает ответ немедленно.
  • Может вернуть пустой ответ, даже если сообщения есть.
  • Приводит к большему числу API-вызовов и повышенным затратам.

 

polling

Разработка приложений на AWS

Длинный опрос

  • Длинный опрос запрашивает все серверы SQS.
  • Ожидает сообщение до 20 секунд.
  • Устраняет лишние пустые ответы.
  • Снижает число API-вызовов и затраты.

 

polling

Разработка приложений на AWS

Стандартные очереди

  • SQS предлагает два типа очередей.
  • Стандартные очереди:
    • Доставка не менее одного раза.
    • Наилучший порядок доставки.
    • Практически неограниченная пропускная способность.

 

queue types

Разработка приложений на AWS

Очереди FIFO

 

queue types

  • Очереди FIFO:
    • Обработка ровно один раз.
    • Строгий порядок сообщений.
    • Встроенная дедупликация сообщений.
  • По умолчанию 300 TPS
    • До 3 000 с пакетной обработкой или больше в режиме высокой пропускной способности.
  • Выбор типа очереди зависит от задачи:
    • Стандартная — для масштаба и производительности.
    • FIFO — для упорядоченности и дедупликации.
Разработка приложений на AWS

Обработка проблемных сообщений

 

dlq

  • Очереди недоставленных сообщений (DLQ) хранят сообщения, которые не удалось обработать.
  • Сообщение перемещается в DLQ после превышения maxReceiveCount.
  • Это предотвращает бесконечные повторные попытки обработки проблемного сообщения.
  • DLQ должна быть того же типа, что и исходная очередь.
  • Для повторной обработки верните сообщения в исходную очередь.
Разработка приложений на AWS

Защита очередей

 

securing SQS

  • Шифрование при передаче по HTTPS включено по умолчанию.
  • Шифрование хранимых данных на стороне сервера с помощью AWS KMS.
  • Шифрование данных на стороне клиента с помощью AWS Encryption SDK.
  • Политики IAM управляют доступом к очередям SQS.
  • Политики на основе ресурсов обеспечивают детальный контроль на уровне очереди.
Разработка приложений на AWS

Основы Amazon SNS

  • Управляемый сервис публикации и подписки (pub/sub).
  • Использует push-модель.
  • Издатели отправляют сообщения в топик.
    • Максимальный размер сообщения — 256 КБ.
  • Потребители подписываются на топики.
  • Подписчики получают сообщения пассивно.

 

sns overview

Разработка приложений на AWS

Масштабирование

  • Поддерживает до 12,5 млн подписок на топик.
  • Без хранения сообщений:
    • Сообщения теряются, если подписчик недоступен.
    • Используйте DLQ или надёжного подписчика (очередь SQS), чтобы не потерять сообщения.
  • Рассылает одно событие множеству потребителей (fan-out).

 

scaling sns

Разработка приложений на AWS

Фильтрация сообщений

  • SNS поддерживает политики фильтрации сообщений.
  • Подписки получают только нужные им сообщения.
  • Без фильтра подписка получает все сообщения.
  • Политики фильтрации применяются на уровне подписки, а не топика.

 

filter

Разработка приложений на AWS

Логика и вычисление фильтров

 

filter polices

  • Фильтры задаются в формате JSON.
  • Сопоставляются с атрибутами сообщения.
  • Несколько условий вычисляются как AND.
  • Несколько значений в одном условии вычисляются как OR.
  • Поддерживается множество операций фильтрации:
    • Точное совпадение строк, числовое, по префиксу, исключение и диапазон.
Разработка приложений на AWS

Безопасность SNS

 

sns security

  • Шифрование данных при передаче по HTTPS включено по умолчанию.
  • Шифрование хранимых данных на стороне сервера с помощью AWS KMS.
    • Предоставьте SNS разрешение на использование ключа KMS.
  • Политики IAM обеспечивают управление доступом.
    • Управляют правами на публикацию в топик и подписку на него.
Разработка приложений на AWS

Давайте потренируемся!

Разработка приложений на AWS

Preparing Video For Download...