Streams 和 Firehose 的用例是什么?

Kar*_*ngh 9 amazon-web-services data-stream amazon-kinesis aws-lambda aws-serverless

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

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

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

小智 11

数据流与 Firehose

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


小智 10

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/


Mar*_*cin 5

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

  • KS 是实时的,而 FH 是接近实时的。
  • KS 需要手动扩展和设置其供应(分片),而 FH 基本上是无服务器的。
  • KS 记录是不可变的(它们在其保留期限内持续存在于流中 - 默认为 24​​ 小时),而 FH 中的记录在它们被传送到目的地的那一刻就从 FH 消失了。

从你写的来看,我认为应该首先考虑 FH,因为你不关心 FH 的非实时性,它更容易管理和设置,你可以指定 S3 作为失败或所有消息的备份

Kinesis Data Firehose 使用 Amazon S3备份它尝试传送到您选择的目的地的所有数据备份失败的数据。

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