AWS - Amazon · 2020年12月23日

Kinesis Datastream,Firehose,Agent各是什么?

Kinesis家族,都是为steam而生。

什么是stream?你可以理解为”大量的不间断的数据”。

Kinesis其实有三个成员:Kinesis Data Stream, Kinesis Data Analytic, Kinesis Data Firehose。

如果把他们三个看成给一个整体,我最开始的理解如下:

Stream负责收,Analytic负责分析,Firehose负责存。

但这样说太理想化了。因为这三个里任何一个组件,都是有入和出两个对象。

对于Stream来说,它的producer是AWS SDK、KPL(Kinesis Producer Library)、和Kinesis Agent。Consumer是AWS SDK,Lambda和Kinesis KCL。

对于Firehose来说,输出仅支持4个,S3、Redshift、ElasticSearch和Splunk。

其实这么说,我最开始的理解也还算有意义。

【特别说一句】Analytic的源只能是streaming source,所以只有KDSKDF

Stream使用Shard,目的就是把streaming收进来,存着,给后边的人用。

它可以存1-7天,每个Shard可以收1MB/s。发的时候是2MB/s。

Analytic在快速流的情况下,可以即使执行SQL查询,然后将结果输出到其他位置,比如S3。

而Firehose是serverless的,它根本不存,大约做个格式变换就存到S3、Redshift那些里面了。为后边做分析准备着。


有没有人想过,Kinesis Data Stream和SQS的对比。

其中一大区别是,Kinesis Data Stream可以把数据存1-7天。而且不删。

什么意思?就是说Kinesis Data Stream的retention期中,即使有consumer来处理数据,也不会删除。

同样的数据可以被多个consumer处理,直到到达retention过期,被删除。

而SQS虽然retention也有4天(默认),最多可以14天,但只要有consumer来取了消息执行过后,这个消息在Queue里就不见了。

这个我觉得是Kinesis Data Stream和SQS的最大区别。