Kinesis Firehose是Kinesis Streams的替代品吗?

时间:2017-10-14 17:32:56

标签: amazon-web-services streaming amazon-kinesis amazon-kinesis-firehose

Kinesis Firehose以及Kinesis Streams用于根据AWS博客中提到的详细信息加载流数据。在Firehose的情况下,没有碎片或维护的概念。在这种情况下,Kinesis Firehose是Kinesis Streams的替代品吗?

5 个答案:

答案 0 :(得分:1)

Kinesis Firehose不是Kinesis Streams的替代品,虽然有几个用例,Kinesis Firehose在推出后接管了。

Kinesis Streams用于缓冲来自生产者的流数据,并将其流式传输到自定义应用程序中进行数据处理和分析,这将消耗临时缓冲的流数据。

数据生成器将数据推送到Kinesis Streams - >应用程序从流和流程中读取数据。

Kinesis Firehose用于捕获流数据并将其加载到其他Amazon服务(如S3和Redshift)中,以便稍后进行分析。

数据生产商将数据推送到Kinesis Firehouse - >使用Lambda的数据转换 - >存储在S3或Redshift中。

这两个也可以组合使用,Kinesis Streams可以将数据流式传输到Kinesis Firehose,以便在处理后可以保留。

答案 1 :(得分:1)

Amazon Kinesis Firehose是一种创建流的简便方法,可以将数据发送到以下某个位置:

  • Amazon S3
  • Amazon Redshift
  • Amazon Elasticache

您还可以创建一个可以在途中操纵数据的Lambda函数。

如果上述内容符合您的需求,那么Firehose可以被视为Kinesis Streams的替代品。但是,Kinesis Streams提供了更大的灵活性,因此它不是一个确切的替代品。

答案 2 :(得分:0)

选择使用哪种服务时要考虑的是每个解决方案的局限性和可扩展性。 AWS Firehose的固定限制为5mb / sec或5000 rec / sec(详细信息here),尽管可以通过请求表格与AWS联系来增加。 另一方面,可以通过增加每个Stream的分片数量(默认为500 shards)来轻松扩展AWS Kinesis。这里的主要问题是每个分片都有自己的成本,您只能通过将当前分片数量加倍来扩大或缩小规模。

正如Ashan所说,这些服务有不同的用途,但是您可以单独使用每个服务,也可以根据需要将它们组合在一起。这里的主要优点是,Kinesis Stream可以被许多消费者所消费,并可以被许多生产者所喂养。另一方面,Firehose Streams充当其他数据源(例如Kinesis Stream)的使用者,并且只能将数据输出到一个目的地(S3,Redshit,Elasticsearch,Splunk)。

答案 3 :(得分:0)

不知道如果使用Kinesis Firehose不存在数据持久性,它将如何替代,除非您是在不需要数据持久性或可能存在成本问题的背景下表示的,否则您的选择将是可以立即将数据放入Kinesis Firehose中进行分析,并将其最终存储在S3或ElasticSearch Cluster中。

答案 4 :(得分:0)

不,只是出于不同的目的。

使用Kinesis Streams,您可以使用Kinesis Producer库构建应用程序,将数据放入流中,然后使用使用Kinesis Client Library的应用程序进行处理,并使用Kinesis Connector Library将处理后的数据发送到S3,Redshift,DynamoDB或ElasticSearch。

使用Kinesis Firehose,创建交付流并将数据直接发送到S3,Redshift或ElasticSearch(使用Kinesis Agent或API)并将其存储在这些服务中要简单一些。

Kinesis Streams最多可以存储7天的数据。

如果要对流数据进行一些自定义处理,则可以使用Kinesis Streams。使用Kinesis Firehose,您只需将其导入S3,Redshift,DynamoDB或ElasticSearch。