Каковы варианты использования Streams и Firehose?

Я работаю над приложением, которое будет читать и анализировать журналы платежных транзакций. Я знаю, что буду использовать Kinesis Analytics в соответствии со своими требованиями, который получает данные от Data Streams и Firehose. Но мне трудно решить, какой метод ввода следует использовать для моей системы. Мои требования:

  1. Он может допускать задержку, но Data не должен терять данные.
  2. Необходимо записывать все ошибки в сегментах DynamoDB или S3.

Какой входной поток подходит для моего варианта использования?


person Karandeep Singh    schedule 27.09.2020    source источник


Ответы (4)


Потоки данных против Firehose

  1. Streams: Kinesis data streams is highly customizable and best suited for developers building custom applications or streaming data for specialized needs.
    • Going to write custom code
    • В режиме реального времени (задержка 200 мс для классического варианта, задержка 70 мс для расширенного разветвления)
    • Вы должны управлять масштабированием (разделение/объединение осколков)
    • Хранение данных от 1 до 7 дней, возможность воспроизведения, несколько потребителей
    • Используйте с Lambda для вставки данных в ElasticSearch в режиме реального времени.
  2. Firehose: Firehose handles loading data streams directly into AWS products for processing.
    • Fully managed, send to S3, Splunk, Redshift, ElasticSearch
    • Бессерверное преобразование данных с помощью Lambda
    • Время, близкое к реальному (минимальное время буферизации — 1 минута)
    • Автоматическое масштабирование
    • Нет хранения данных
person Community    schedule 30.09.2020

Существуют некоторые ключевые различия между Kinesis Stream (KS) и Firehose (FH):

  • KS — в реальном времени, а FH — почти в реальном времени.
  • KS требует ручного масштабирования и настройки его предоставления (осколков), в то время как FH в основном бессерверен.
  • Записи KS являются неизменяемыми (они сохраняются в потоке в течение периода хранения — по умолчанию 24 часа), в то время как записи в FH удаляются из FH в момент их доставки в пункт назначения.

Из того, что вы написали, я думаю, что FH следует рассматривать в первую очередь, поскольку вас не беспокоит характер FH не в реальном времени, им намного проще управлять и настраивать, и вы можете укажите S3 в качестве резервной копии для ошибочных или всех сообщений:

Kinesis Data Firehose использует Amazon S3 для резервного копирования всех или неудачных только данных, которые он пытается доставить в выбранное место назначения.

Резервное копирование S3 гарантирует, что вы не потеряете записи в случае сбоя доставки или обработки лямбда. Впоследствии, на мой взгляд, Firehose хорошо решает ваши две проблемы.

person Marcin    schedule 28.09.2020

Kinesis Data Streams позволяет потребителям ЧИТАТЬ потоковые данные. И это дает вам множество вариантов для этого. Он лучше всего подходит для случаев использования, требующих пользовательской обработки, выбора платформ потоковой обработки и задержки обработки менее секунды. Данные надежно хранятся в потоках до 7 дней и распределяются по 3 зонам доступности.

Kinesis Firehose используется для ЗАГРУЗКИ потоковой передачи данных в целевое назначение (S3, Elasticsearch, Splunk и т. д.). Вы также можете преобразовывать потоковые данные (с помощью Lambda) перед их загрузкой в ​​место назначения. Данные о неудачных попытках будут сохранены на S3.

Поэтому, если ваша цель — загружать данные только в сервис Kinesis Data Analytics с минимальной предварительной обработкой или без нее, попробуйте сначала Kinesis Firehose.

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

Для справки взгляните на следующую реализацию решений AWS: https://aws.amazon.com/solutions/implementations/real-time-web-analytics-with-kinesis/ https://aws.amazon.com/solutions/implementations/real-time-iot-device-monitoring-with-kinesis/

person shuraosipov    schedule 01.10.2020

Вы можете использовать firehose для ввода данных в аналитику, но вопрос в том, как firehose получает данные? Вы можете написать свой собственный код для подачи данных или использовать потоки данных Kinesis. Firehose в основном представляет собой систему доставки потоковых данных, которые можно записывать в различные места назначения, такие как S3, Redshift или другие, с дополнительной возможностью выполнять преобразование данных.

Перейдите по этой ссылке https://www.slideshare.net/AmazonWebServices/abd217from-batch-to-streaming?from_action=save и посмотрите, какую пользу эта информация может принести вашему варианту использования.

Дополнительная информация: https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works.html https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html

person Selvaraj Y    schedule 03.03.2021