【发布时间】:2018-03-26 14:56:54
【问题描述】:
Kinesis Firehose 以及 Kinesis Streams 用于根据 AWS 博客中提到的详细信息加载流数据。对于 Firehose,没有分片或维护的概念。在这种情况下,Kinesis Firehose 是否可以替代 Kinesis Streams?
【问题讨论】:
标签: amazon-web-services streaming amazon-kinesis amazon-kinesis-firehose
Kinesis Firehose 以及 Kinesis Streams 用于根据 AWS 博客中提到的详细信息加载流数据。对于 Firehose,没有分片或维护的概念。在这种情况下,Kinesis Firehose 是否可以替代 Kinesis Streams?
【问题讨论】:
标签: amazon-web-services streaming amazon-kinesis amazon-kinesis-firehose
Amazon Kinesis Firehose 是一种创建流的简单方法,将数据发送到以下之一:
您还可以创建一个 Lambda 函数,该函数可以在传输过程中对数据进行操作。
如果以上满足您的需求,那么 Firehose 可以被视为 Kinesis Streams 的替代品。但是,Kinesis Streams 提供了更大的灵活性,因此它不是完全替代品。
【讨论】:
Kinesis Firehose 不是 Kinesis Streams 的替代品,尽管有多个用例,但 Kinesis Firehose 在推出后已接管。
Kinesis Streams 用于缓冲来自生产者的流式数据并将其流式传输到自定义应用程序中进行数据处理和分析,这些应用程序将使用临时缓冲的流数据。
数据生产者将数据推送到 Kinesis Streams -> 应用程序从流中读取数据并进行处理。
Kinesis Firehose 用于捕获流数据并将其加载到其他 Amazon 服务(例如 S3 和 Redshift)中,以便稍后进行分析。
数据生产者将数据推送到 Kinesis Firehose -> 使用 Lambda 进行数据转换 -> 存储在 S3 或 Redshift 中。
这两者也可以结合使用,Kinesis Streams 可以将数据流式传输到 Kinesis Firehose,以便在处理后持久化。
【讨论】:
在选择要使用的服务时要考虑的一点是每个解决方案的限制和可扩展性。 AWS Firehose 有 5mb/sec 或 5000 rec/sec 的固定限制(详情here),但可以通过申请表联系 AWS 来增加限制。 另一方面,AWS Kinesis 可以通过增加每个 Stream 的分片数量来轻松扩展(默认为 500 shards)。这里的主要问题是每个分片都有自己的成本,您只能通过将当前分片数量加倍来扩大或缩小规模。
正如Ashan 所说,这些服务有不同的用途,但您可以单独使用每一种,也可以根据需要将它们组合使用。这里的主要优势是 Kinesis Stream 可以被许多消费者使用,并由许多生产者提供。另一方面,Firehose Streams 充当其他数据源(例如 Kinesis Stream)的消费者,并且只能将数据输出到一个目的地(S3、Redshit、Elasticsearch、Splunk)。
【讨论】:
不确定如果 Kinesis Firehose 没有数据持久性,它将如何替代,除非您的意思是在不需要数据持久性或成本问题的情况下,那么您的选择是立即分析 Kinesis Firehose 中的数据,并最终将其存储在 S3 或 ElasticSearch 集群中。
【讨论】:
不,只是目的不同。
借助 Kinesis Streams,您可以使用 Kinesis Producer Library 构建应用程序,将数据放入流中,然后使用使用 Kinesis Client Library 的应用程序对其进行处理,并使用 Kinesis 连接器库将处理后的数据发送到 S3、Redshift、DynamoDB 或弹性搜索。
使用 Kinesis Firehose,您可以更简单地创建传输流并将数据直接发送到 S3、Redshift 或 ElasticSearch(使用 Kinesis 代理或 API)并将其存储在这些服务中。
另一方面,Kinesis Streams 最多可以将数据存储 7 天。
如果您想对流数据进行一些自定义处理,您可以使用 Kinesis Streams。使用 Kinesis Firehose,您只需将其引入 S3、Redshift、DynamoDB 或 ElasticSearch。
【讨论】: