【问题标题】:Kafka like offset on Kinesis Stream?Kafka 像 Kinesis Stream 上的偏移量?
【发布时间】:2017-03-16 04:49:46
【问题描述】:

我过去曾使用过 Kafka,最近需要在 AWS Kinesis Stream 上移植部分数据管道。现在我读到 Kinesis 实际上是 Kafka 的一个分支,并且有许多相似之处。

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

真的有可能在同一个 AWS Kinesis Stream 上拥有具有不同摄取率的不同消费者吗?

【问题讨论】:

    标签: amazon-web-services amazon-kinesis


    【解决方案1】:

    是的。

    您可以拥有多个 Kinesis 消费者应用程序。假设你有 2 个。

    1. 第一个消费者应用程序(我认为它是 Kafka 中的“消费者组”?)可以是“第一个应用程序”并将其位置存储在 DynamoDB“第一个应用程序表”中。它可以拥有任意数量的节点(ec2 实例)。
    2. 第二个消费者应用程序也可以在同一个流上工作,并将其位置存储在另一个 DynamoDB 表中,比如“第二个应用程序表”。

    每个表都将包含“应用程序 Y 在分片 X 上的最后处理位置是什么”信息。因此,这 2 个应用程序将相同分片的检查点存储在不同的位置,这使得它们相互独立。

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

    我不太了解卡夫卡,但据我所知; Kafka“分区”在 Kinesis 中是“分片”,同样,Kafka“偏移”在 Kinesis 中是“sequence number”。 Kinesis 消费者库对存储的序列使用术语“checkpoint”。就像你说的,概念是相似的。

    【讨论】:

    • 太好了。正是我想要的。
    • 谷歌搜索“Checkpoint Kinesis”给了我后续问题的答案。
    • 这个维护偏移量的逻辑是不是一定要写(这里是seq number)?还是它的内置?
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2020-05-31
    • 2019-11-28
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多