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,所以只有KDS和KDF。
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的最大区别。
