Очереди 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 — локальная установка не требуется.
Все уроки этого курса
- Очереди SQS Standard и FIFO
- Тайм-аут видимости, DLQ и длительный опрос
- Темы SNS и архитектура веерной рассылки
- Фильтрация сообщений SQS и интеграция SNS + SQS