0Pricing
AWS Solutions Architect · Урок

Очереди SQS Standard и FIFO

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

«Очереди SQS Standard и FIFO» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Почему важны очереди сообщений

Очереди сообщений разделяют производителей и потребителей: производитель отправляет сообщение в очередь, не дожидаясь, пока потребитель его обработает. Потребитель обрабатывает сообщения в своём темпе. Этот шаблон не позволяет быстрым производителям перегружать медленных потребителей, обеспечивает независимое масштабирование каждого уровня и предоставляет надёжный буфер, если потребитель временно недоступен. Amazon SQS — это полностью управляемый сервис очередей сообщений AWS с высокой доступностью.

Характеристики стандартной очереди SQS

Стандартные очереди обеспечивают неограниченную пропускную способность (почти неограниченное число операций в секунду). Они гарантируют доставку как минимум один раз — в редких случаях сообщение может быть доставлено более одного раза из-за распределённой инфраструктуры. Порядок сообщений обеспечивается по возможности: обычно сообщения доставляются в порядке отправки, но это не гарантируется. Стандартные очереди идеально подходят, когда пропускная способность критична, а потребитель может обрабатывать периодические дубликаты и сообщения, поступившие не по порядку.

# Create a Standard queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue'

# Send a message
aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/OrderProcessingQueue' \
  --message-body 'OrderId-12345'

Характеристики очереди SQS FIFO

Очереди FIFO (сначала поступившее — первым обработано) гарантируют обработку ровно один раз и строгий порядок сообщений. Сообщения доставляются точно в том порядке, в котором они были отправлены. Очереди FIFO поддерживают до 300 операций в секунду (до 3 000 при пакетной обработке). Имена очередей FIFO должны заканчиваться на .fifo. Используйте очереди FIFO, когда порядок и семантика обработки ровно один раз критичны: например, для финансовых операций, обработки заказов в электронной коммерции и обновления запасов.

# Create a FIFO queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue.fifo' \
  --attributes '{
    "FifoQueue": "true",
    "ContentBasedDeduplication": "true"
  }'

Группы сообщений в очередях FIFO

Очереди FIFO используют идентификаторы групп сообщений, чтобы разделять порядок обработки внутри очереди. Сообщения с одним и тем же идентификатором группы доставляются по порядку, а сообщения с разными идентификаторами групп могут обрабатываться параллельно. Например, используйте customerId в качестве идентификатора группы: заказы каждого клиента обрабатываются последовательно, а заказы разных клиентов — одновременно. Это обеспечивает семантику FIFO и горизонтальное масштабирование между потребителями.

aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/Orders.fifo' \
  --message-body 'Order details here' \
  --message-group-id 'customer-789' \
  --message-deduplication-id 'order-uuid-abc123'

Устранение дубликатов в очередях FIFO

Очереди FIFO предотвращают повторную обработку сообщений с помощью идентификатора устранения дубликатов. Если два сообщения отправлены с одним и тем же идентификатором в течение 5-минутного интервала устранения дубликатов, второе сообщение молча отбрасывается. Вы можете явно указать идентификатор устранения дубликатов (MessageDeduplicationId) или включить устранение дубликатов на основе содержимого, при котором SQS автоматически вычисляет хеш SHA-256 тела сообщения и использует его как идентификатор устранения дубликатов. Устранение дубликатов на основе содержимого проще, но требует уникального содержимого сообщений.

Ограничения срока хранения и размера сообщений

SQS хранит сообщения в течение настраиваемого периода: минимум 1 минута, максимум 14 дней (по умолчанию — 4 дня). Сообщения, не обработанные в течение этого периода, удаляются автоматически. Максимальный размер сообщения — 256 KB. Для более крупных данных используйте расширенную клиентскую библиотеку SQS или храните данные в S3, отправляя в сообщении SQS только ссылку на объект S3. На стандартные очереди и очереди FIFO распространяются одинаковые ограничения.

Получение и удаление сообщений

Потребители опрашивают очередь с помощью receive-message. После получения сообщение становится невидимым (скрывается от других потребителей) на период, заданный временем ожидания видимости. Потребитель должен обработать сообщение, а затем явно удалить его с помощью дескриптора квитанции до истечения этого периода. Если потребитель завершает работу с ошибкой или не успевает удалить сообщение, оно появляется снова, и его может обработать другой потребитель — так в стандартных очередях обеспечивается доставка как минимум один раз.

RECEIPT=$(aws sqs receive-message \
  --queue-url 'https://...' \
  --query 'Messages[0].ReceiptHandle' --output text)

# Process message, then delete it
aws sqs delete-message \
  --queue-url 'https://...' \
  --receipt-handle "$RECEIPT"

Сравнение пропускной способности на практике

Стандартные очереди подходят для создания миниатюр изображений, отправки уведомлений по электронной почте и обработки журналов — для рабочих нагрузок, в которых дубликаты можно обрабатывать идемпотентно, а порядок не имеет значения. Очереди FIFO необходимы для обработки банковских переводов (сначала списание, затем зачисление), обновлений корзины в электронной коммерции (сначала добавление товара, затем оформление заказа) и этапов рабочего процесса, где этап 2 должен следовать за этапом 1. Для большинства архитектур с высокой пропускной способностью стандартные очереди являются вариантом по умолчанию; переходите на FIFO только тогда, когда порядок или доставка ровно один раз являются обязательным требованием.

Пакетная обработка для повышения пропускной способности и снижения затрат

SQS взимает плату за каждый запрос к API. Используйте пакетные операции, чтобы отправлять, получать и удалять до 10 сообщений за один вызов API, снижая затраты до 10 раз. Очереди FIFO поддерживают режим высокой пропускной способности (с включённой пакетной обработкой), который повышает предел до 3 000 сообщений в секунду при пакетах по 10 сообщений. В рабочей среде всегда используйте send-message-batch и delete-message-batch, чтобы минимизировать затраты на вызовы API.

aws sqs send-message-batch \
  --queue-url 'https://...' \
  --entries '[
    {"Id": "msg1", "MessageBody": "Order-001"},
    {"Id": "msg2", "MessageBody": "Order-002"},
    {"Id": "msg3", "MessageBody": "Order-003"}
  ]'

Политики доступа к очередям

Очереди SQS защищены политиками на основе ресурсов (политиками очереди), которые определяют, кто может отправлять сообщения в очередь и получать их из очереди. Это особенно важно при разрешении межаккаунтного доступа или когда SNS публикует сообщения в очередь SQS. Доступ Lambda к SQS регулируется политикой IAM роли выполнения Lambda (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes). Всегда применяйте принцип минимальных привилегий: не предоставляйте потребителю больше разрешений, чем на получение и удаление сообщений.

Выбор Standard или FIFO: руководство по принятию решения

Чтобы сделать выбор, ответьте на следующие вопросы: (1) Имеет ли значение порядок? Если да → FIFO. (2) Требуется ли обработка ровно один раз? Если да → FIFO. (3) Нужна ли пропускная способность выше 3 000 TPS? Если да → Standard (для FIFO предел составляет 3 000 TPS при пакетной обработке). (4) Могут ли потребители обрабатывать дубликаты? Если да → Standard проще и дешевле. На экзамене SAA-C03 ключевые слова для FIFO: «порядок», «ровно один раз», «последовательный», «устранение дубликатов». Ключевые слова для Standard: «высокая пропускная способность», «по возможности», «как минимум один раз».

Быстрая проверка

Проверьте, насколько Вы поняли концепции AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что стандартные очереди обеспечивают неограниченную пропускную способность, доставку как минимум один раз и порядок по возможности, поэтому подходят для больших объёмов данных, допускающих дубликаты; очереди FIFO гарантируют обработку ровно один раз и строгий порядок сообщений с помощью идентификаторов групп сообщений и идентификаторов устранения дубликатов, но ограничены 3 000 TPS при пакетной обработке; выбор между ними зависит от того, являются ли порядок и устранение дубликатов обязательными требованиями. Далее мы рассмотрим время ожидания видимости, очереди недоставленных сообщений и длительный опрос.

Часто задаваемые вопросы

Урок «Очереди SQS Standard и FIFO» бесплатный?

Да — полный текст урока «Очереди SQS Standard и FIFO» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Очереди SQS Standard и FIFO»?

Сравните очереди Standard, обеспечивающие максимальную пропускную способность, с очередями FIFO для упорядоченной обработки ровно один раз и выберите подходящий тип. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Очереди SQS Standard и FIFO»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Очереди SQS Standard и FIFO
  2. Тайм-аут видимости, DLQ и длительный опрос
  3. Темы SNS и архитектура веерной рассылки
  4. Фильтрация сообщений SQS и интеграция SNS + SQS
← Назад к AWS Solutions Architect