Kafka喜欢Kinesis Stream的补偿吗?

时间:2017-03-16 04:49:46

标签: amazon-web-services amazon-kinesis

我过去曾与Kafka合作过,最近需要在AWS Kinesis Stream上移植部分数据管道。现在我已经读到Kinesis实际上是卡夫卡的一个分支,并且有很多相似之处。

但是我没有看到我们如何让多个消费者从同一个流中读取,每个消费者都有相应的偏移量。每个数据记录都有一个序列号,但我找不到任何特定于消费者的信息(Kafka group Id?)。

是否真的有可能让不同的消费者拥有与同一AWS Kinesis Stream不同的摄取率?

1 个答案:

答案 0 :(得分:6)

您可以拥有多个Kinesis Consumer Applications。假设你有2个。

  1. 第一个消费者应用程序(我认为它是Kafka中的“消费者群体”)可以是“first-app”并将其存储在DynamoDB“first-app-table”中。它可以包含任意数量的节点(ec2实例)。
  2. 第二个消费者应用程序也可以在同一个流上工作,并将它的位置存储在另一个DynamoDB表上,让我们说“second-app-table”。
  3. 每个表都包含“应用Y的分片X上最后处理的位置”信息。因此,2个应用程序在不同的地方存储相同分片的检查点,这使它们独立。

    关于摄取率,使用KCL的使用者应用程序中存在“idleTimeBetweenReadsInMillis”值,这是Amazon Kinesis API for Get操作的轮询间隔。例如,第一个应用程序可以具有“2000”轮询间隔,因此它将每2秒轮询一次流的分片,以查看是否有任何新记录。

    我不知道卡夫卡,但据我记得; Kafka“分区”在Kinesis中是“碎片”,同样Kafka“offset”在Kinesis中是“sequence number”。 Kinesis Consumer Library对存储的序列使用术语“checkpoint”。就像你说的那样,概念是相似的。