Streams 和 Firehose 的用例是啥?
Posted
技术标签:
【中文标题】Streams 和 Firehose 的用例是啥?【英文标题】:What's the use cases of Streams and Firehose?Streams 和 Firehose 的用例是什么? 【发布时间】:2021-01-13 12:18:09 【问题描述】:我正在开发一个可以读取和分析支付交易日志的应用程序。我知道我会根据我的要求使用 Kinesis Analytics,它从数据流和 Firehose 中获取输入。但是我在决定我的系统应该使用哪种输入法时遇到了麻烦。 我的要求是:
-
它可以容忍延迟,但 Data 不应丢失数据。
必须记录 DynamoDB 或 S3 存储桶中的所有错误。
哪个输入流适合我的用例?
【问题讨论】:
【参考方案1】:数据流与 Firehose
-
流:
Kinesis 数据流具有高度可定制性,最适合开发人员构建自定义应用程序或流数据以满足特殊需求。
要编写自定义代码
实时(经典延迟为 200 毫秒,增强型扇出延迟为 70 毫秒)
您必须管理扩展(分片拆分/合并)
数据存储 1 到 7 天,回放能力,多消费者
与 Lambda 结合使用,将数据实时插入 ElasticSearch
消防水带:
Firehose 负责将数据流直接加载到 AWS 产品中进行处理。
完全托管,发送到 S3、Splunk、Redshift、ElasticSearch
使用 Lambda 进行无服务器数据转换
近乎实时(最短缓冲时间为 1 分钟)
自动缩放
无数据存储
【讨论】:
【参考方案2】:Kinesis Stream (KS) 和 Firehose (FH) 之间存在一些主要区别:
KS 是实时的,而 FH 是接近实时的。 KS 需要手动扩展和设置其供应(分片),而 FH 基本上是无服务器的。 KS 记录是不可变的(它们在流中持续保留其保留期 - 默认为 24 小时),而 FH 中的记录在传送到目的地的那一刻就从 FH 中消失。从你写的来看,我认为应该首先考虑FH,因为你不关心FH的非实时性,它更容易管理和设置,你可以specify S3 as a backup失败或全部消息:
Kinesis Data Firehose 使用 Amazon S3 仅备份所有或失败它尝试传送到您选择的目的地的数据。
如果交付或 lambda 处理失败,S3 备份可确保您不会丢失记录。随后,在我看来,Firehose 很好地解决了您的两点。
【讨论】:
【参考方案3】: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/
【讨论】:
【参考方案4】:您可以使用 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
【讨论】:
以上是关于Streams 和 Firehose 的用例是啥?的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 中的“as const”是啥意思,它的用例是啥?
cudaGraphicsGLRegisterImage中cudaGraphicsRegisterFlagsWriteDiscard的用例是啥?