Streams 和 Firehose 的用例是什么?

What's the use cases of Streams and Firehose?

我正在开发一个可以读取和分析支付交易日志的应用程序。我知道我将根据我的要求使用 Kinesis Analytics,它从 Data Streams 和 Firehose 获取输入。但是我无法决定我的系统应该使用哪种输入法。 我的要求是:

  1. 它可以容忍延迟,但数据不应该丢失数据。
  2. 必须在 DynamoDB 或 S3 存储桶中记录所有错误。

哪种输入流适合我的用例?

Kinesis Stream (KS) 和 Firehose (FH) 之间存在一些关键区别

  • KS是实时,而FH是near-real时间。
  • KS 需要手动缩放和设置其配置(分片),而 FH 基本上是无服务器的。
  • KS 记录是不可变的(它们在流中的保留期保持不变——默认为 24​​ 小时),而 FH 中的记录在传送到目的地后就从 FH 中消失了。

从你写的来看,我认为应该首先考虑FH,因为你不关心non-real-time FH的性质,它更容易管理和设置,你可以specify S3 as a backup对于失败或所有消息:

Kinesis Data Firehose uses Amazon S3 to backup all or failed only data that it attempts to deliver to your chosen destination.

如果传送或 lambda 处理失败,S3 备份可确保您不会丢失记录。随后,在我看来,Firehose 很好地解决了您的两点问题

数据流与 Firehose

  1. 流: Kinesis data streams 是高度可定制的,最适合开发人员构建自定义应用程序或流数据以满足特殊需求。
    • 将要编写自定义代码
    • 实时(经典延迟 200 毫秒,增强延迟 70 毫秒 fan-out)
    • 您必须管理扩展(分片 splitting/merging)
    • 数据存储 1 到 7 天,回放能力,多消费者
    • 使用 Lambda 将 real-time 中的数据插入到 ElasticSearch
  2. 消防水带: Firehose 负责将数据流直接加载到 AWS 产品中进行处理。
    • 完全托管,发送到 S3、Splunk、Redshift、ElasticSearch
    • 使用 Lambda 进行无服务器数据转换
    • 接近实时(最低缓冲时间为 1 分钟)
    • 自动缩放
    • 无数据存储

Kinesis Data Streams 允许消费者READ 流数据。它为您提供了很多选择。它最适合需要自定义处理、选择流处理框架和 sub-second 处理延迟的用例。 数据可靠地存储在流中长达 7 天,并分布在 3 个可用区中。

Kinesis Firehose 用于 LOAD 将数据流式传输到目标位置(S3、Elasticsearch、Splunk 等)。您还可以在将流式数据加载到目标之前对其进行转换(通过使用 Lambda)。 失败尝试的数据将保存到 S3。

因此,如果您的目标是仅将数据加载到 Kinesis Data Analytics 服务中,并且首先尝试使用 Kinesis Firehose 时pre-processing。

请注意,在选择合适的服务时,您还需要考虑成本、开发工作、扩展选项、数据量等方面。

请查看以下 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/

您可以使用 firehose 进行分析,但问题是 firehose 如何获取数据?您可以编写自己的代码来提供数据或使用运动数据流。 Firehose 主要是流数据的传输系统,可以写入各种目的地,如 S3、Redshift 或其他具有执行数据转换的可选功能的目的地。

检查此 link 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