SQS или Kinesis, какой из них хорош для очередей? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть сервер, который может обрабатывать только 20 запросов одновременно.Когда приходит много запросов, я хочу сохранить данные запросов в некоторых очередях.и прочитайте набор запросов (т.е. 20) и обработайте их партиями.Каков был бы идеальный путь к этому?Использование SQS или кинезис.Я полностью сбит с толку.

1 Ответ

0 голосов
/ 26 февраля 2019

SQS = Simple Queue Service - для организации очередей сообщений в формате 1: 1 (после того, как сообщение израсходовано, оно удаляется из очереди)

Kinesis = низкая задержка, потоковая передача данных большого объема ... обычнодля 1: N (много потребителей сообщений)

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

Queue => SQS.
Потоки данных => Kinesis.

Взято из https://aws.amazon.com/kinesis/data-streams/faqs/:

Вопрос: Чем потоки данных Amazon Kinesis отличаются от Amazon SQS?

Потоки данных Amazon Kinesis обеспечивают обработку потоковых больших данных в режиме реального времени.Он обеспечивает упорядочение записей, а также возможность читать и / или воспроизводить записи в одном и том же порядке для нескольких приложений Amazon Kinesis.Клиентская библиотека Amazon Kinesis (KCL) доставляет все записи для данного ключа раздела на один и тот же процессор записей, упрощая создание нескольких приложений, считывающих данные из одного потока данных Amazon Kinesis (например, для подсчета, агрегирования и фильтрации)..

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

В: Когда следует использоватьAmazon Kinesis Data Streams и когда мне следует использовать Amazon SQS?

Мы рекомендуем Amazon Kinesis Data Streams для сценариев использования с требованиями, аналогичными следующим:

  • Маршрутизация связанных записей втот же процессор записи (как в потоковом MapReduce).Например, подсчет и агрегирование проще, когда все записи для данного ключа направляются на один и тот же процессор записей.
  • Упорядочение записей.Например, вы хотите перенести данные журнала с хоста приложения на хост обработки / архивирования, сохраняя при этом порядок операторов журнала.
  • Возможность для нескольких приложений одновременно использовать один и тот же поток.Например, у вас есть одно приложение, которое обновляет панель мониторинга в реальном времени, а другое - архивирует данные в Amazon Redshift.Вы хотите, чтобы оба приложения использовали данные из одного и того же потока одновременно и независимо друг от друга.
  • Возможность использовать записи в том же порядке несколько часов спустя.Например, у вас есть приложение для выставления счетов и приложение для аудита, которое работает через несколько часов после приложения для выставления счетов.Поскольку Amazon Kinesis Data Streams хранит данные до 7 дней, вы можете запустить приложение аудита до 7 дней после приложения для выставления счетов.

Мы рекомендуем Amazon SQS для случаев использования с требованиями, аналогичнымиследующее:

  • Семантика обмена сообщениями (например, подтверждение / сбой на уровне сообщений) и время ожидания видимости.Например, у вас есть очередь рабочих элементов и вы хотите отслеживать успешное завершение каждого элемента независимо.Amazon SQS отслеживает подтверждение / сбой, поэтому приложение не должно поддерживать постоянную контрольную точку / курсор.Amazon SQS удалит заблокированные сообщения и повторно отправит сбойные сообщения после заданного времени ожидания видимости.
  • Индивидуальная задержка сообщения.Например, у вас есть очередь заданий, и вам нужно запланировать отдельные задания с задержкой.В Amazon SQS вы можете настроить задержку отдельных сообщений на 15 минут.
  • Динамически увеличивая параллелизм / пропускную способность во время чтения.Например, у вас есть рабочая очередь, и вы хотите добавить больше читателей, пока не будет очищено отставание.С потоками данных Amazon Kinesis вы можете масштабировать до достаточного количества сегментов (однако учтите, что вам нужно заранее выделить достаточно фрагментов).
  • Использование способности Amazon SQS масштабироваться прозрачно.Например, вы буферизуете запросы и изменения нагрузки в результате случайных скачков нагрузки или естественного роста вашего бизнеса.Поскольку каждый буферизованный запрос может быть обработан независимо, Amazon SQS может прозрачно масштабироваться для обработки нагрузки без каких-либо инструкций от вас.
...