Типы очередей
Amazon SQS предлагает два типа очередей для использования в приложениях с различными требованиями.
Стандартные очереди
Неограниченная пропускная способность. Стандартные очереди поддерживают почти неограниченное количество транзакций в секунду (TPS) на одно действие API.
Доставка по принципу «хотя бы один раз». Сообщение доставляется как минимум один раз, иногда доставляется несколько копий сообщения.
Упорядочение «Наилучшее из возможного». Иногда сообщения могут быть доставлены в порядке, отличающемся от порядка их отправки.
Очереди FIFO
Высокая пропускная способность. По умолчанию очереди FIFO поддерживают обработку до 300 сообщений в секунду (300 операций отправки, получения или удаления в секунду). При пакетировании 10 сообщений на операцию (максимум) очереди FIFO могут поддерживать обработку до 3000 сообщений в секунду. Чтобы запросить увеличение лимита, подайте заявку в службу поддержки.
Строго однократная обработка. Сообщение доставляется один раз и остается доступным до тех пор, пока получатель не обработает и не удалит его. Дублирующие сообщения в очередь не помещаются.
Доставка по принципу «первым получено – первым отправлено». Порядок, в котором сообщения отправляются и принимаются, строго сохраняется.
Стандартные очереди можно использовать в различных сценариях, главное, чтобы приложение могло обрабатывать повторяющиеся сообщения и сообщения, доставляемые вне очереди. Ниже приведено несколько примеров.
- Разделение обработки интерактивных запросов пользователей и интенсивной работы в фоновом режиме: возможность загружать файлы мультимедиа и при этом изменять их или шифровать.
- Распределение заданий по нескольким рабочим узлам: обработка большого количества запросов на валидацию кредитных карт.
- Пакетирование сообщений для обработки в будущем: планирование добавления в базу данных нескольких записей.
Очереди FIFO предназначены для расширения возможностей обмена сообщениями между приложениями в случаях, когда порядок событий или операций принципиально важен, а также в случаях, когда дублирование сообщений недопустимо. Ниже приведено несколько примеров.
- Обеспечение правильного порядка выполнения команд пользователя.
- Отображение правильной цены на продукт за счет отправки изменений цен в соответствующем порядке.
- Предотвращение записи учащегося на учебный курс до того, как он пройдет регистрацию и создаст аккаунт.
Функциональные возможности
- Неограниченные очереди и сообщения. Создание неограниченных очередей Amazon SQS с неограниченным числом сообщений в любом регионе.
- Объем полезных данных. Сообщение может содержать до 256 КБ текста в любом формате. Каждые 64 КБ объема оплачиваются как один запрос. Например, один вызов API объемом 256 КБ оплачивается как четыре запроса. Для отправки сообщений объемом более 256 КБ можно применять расширенную клиентскую библиотеку Amazon SQS для Java, которая использует сервис Amazon S3 для хранения текстов сообщений. Ссылка на текст сообщения отправляется с использованием SQS.
- Пакеты. Отправка, получение или удаление сообщений пакетами до 10 сообщений или 256 КБ. Стоимость пакета равна стоимости одного сообщения, благодаря чему клиенты, использующие пакетную обработку, смогут извлечь из SQS дополнительную выгоду.
- Длинные опросы. Снижение объемов избыточных опросов позволяет уменьшить издержки и получать новые сообщения как можно скорее. Если очередь пуста, длинные опросы способны до 20 секунд ждать получения следующего сообщения. Стоимость длинных опросов равна стоимости обычных запросов.
- Хранение сообщений в очередях до 14 дней.
- Возможность одновременно отправлять и читать сообщения.
- Блокировка сообщений. После получения сообщение блокируется на время обработки. Этот механизм предотвращает обработку одного сообщения сразу несколькими компьютерами. Если обработка сообщения завершится неудачно, блокировка истечет, и сообщение снова станет доступным.
- Совместное использование очередей. Безопасный общий доступ к очередям Amazon SQS как для анонимных, так и для конкретных аккаунтов AWS. Общий доступ к очередям можно ограничить по IP-адресам и времени суток.
- Шифрование на стороне сервера (SSE). Защита содержимого сообщений в очередях Amazon SQS с помощью ключей, управляемых сервисом AWS Key Management Service (AWS KMS). Шифрование сообщений выполняется, как только Amazon SQS получает их. Сообщения хранятся в зашифрованном виде. Amazon SQS расшифровывает сообщения только тогда, когда они отправляются авторизованному получателю.
- Очереди необрабатываемых сообщений (DLQ). Работа с сообщениями, которые не были обработаны потребителем, использующим очереди необрабатываемых сообщений. Если максимальное количество попыток получения сообщения превышено, сообщение перемещается в очередь необрабатываемых сообщений (DLQ), связанную с исходной очередью. Настройка отдельных процессов для очереди DLQ, чтобы проанализировать и понять причину «зависания» сообщений. Очереди DLQ должны быть того же типа, что и исходные очереди (стандартные или FIFO).
Использование сервиса Amazon SQS с другими инфраструктурными веб-сервисами AWS
Очереди сообщений Amazon SQS можно использовать совместно с другими сервисами AWS, такими как Redshift, DynamoDB, RDS, EC2, ECS, Lambda и S3, что позволяет повысить масштабируемость и надежность распределенных приложений. Ниже приведено несколько распространенных схем использования.
- Рабочие очереди. Разделение компонентов распределенного приложения, которые не способны одновременно обрабатывать одинаковое количество данных.
- Буферные и пакетные операции. Расширение масштабируемости и повышение надежности архитектуры, а также выравнивание временных пиков объемов без потери сообщений или увеличения задержек.
- Выгрузка запросов. Удаление медленных операций из маршрутов интерактивных запросов за счет добавления запроса в очередь.
- Распределение. Возможность использовать SQS с сервисом Simple Notification Service (SNS), чтобы параллельно отправлять идентичные копии сообщения в несколько очередей.
- Приоритет. Использование отдельных очередей для установления приоритета процессов.
- Масштабируемость. Так как для работы с очередями сообщений используются несвязанные процессы, скорость отправки или приема сообщений легко увеличить, просто добавив еще один процесс.
- Отказоустойчивость. Если отказывает часть системы, нет необходимости приостанавливать работу всей системы целиком. Очереди сообщений разделяют компоненты вашей системы, и если процесс, читающий сообщения из очереди, дал сбой, то сообщения по-прежнему могут добавляться в очередь и будут обработаны, как только работа системы будет восстановлена.
Надлежащее использование и ограничения
Использование данного сервиса регламентируется пользовательским соглашением Amazon Web Services.
Подробнее о ценах на Amazon SQS