gpt4 book ai didi

apache-kafka - Kinesis如何实现Kafka风格的Consumer Groups?

转载 作者:行者123 更新时间:2023-12-04 12:27:28 25 4
gpt4 key购买 nike

在 Kafka 中,我可以将我的主题分成许多分区。我不能拥有比 Kafka 中的分区更多的消费者,因为分区被用作扩展主题的一种方式。如果我有更多的负载,我可以增加分区的数量,这将允许我增加消费者的数量,这将允许我在给定的主题上有更多的线程/进程处理。

在Kafka中,有一个Consumer Group的概念。如果我们在一个主题上有 10 个消费者组,那么每个消费者组都有机会处理一个主题中的每条消息。消费者组仍然利用分区的可扩展性(即每个消费者组最多可以有“n”个消费者,其中“n”是一个主题的分区数)。这就是 kafka 的美妙之处,可扩展性和多 channel 读取是两个独立的概念,两个独立的旋钮可以转动。

在 Kinesis 中,我们被告知,如果您使用 Kinesis 库客户端,您可以通过定义不同的 Kinesis 应用程序来获得与使用者组相同的功能。换句话说,我们可以让不同的 Kinesis 应用程序独立地流式传输来自同一流和不同时间的所有记录。

我们还被告知“Amazon Kinesis 客户端库 (KCL) 会自动为每个 Amazon Kinesis 应用程序创建一个 Amazon DynamoDB 表,以跟踪和维护状态信息,例如重新分片事件和序列号检查点。”

好的,我准备开始阅读 KCL 代码 here ,但我希望有人可以回答这些问题以节省我一些时间。

  • KCL实际上是如何做到这一点的?
  • 有没有解释这个过程的图表?
  • 如果我在所有先前的 Kinesis 应用程序已经生成和使用了一条记录之后启动了一个新的 Kinesis 应用程序 (MyKinesisApp1),新的 Kinesis 应用程序 (MyKinesisApp1) 是否仍然有机会使用该记录?换句话说,Kinesis 是在处理后从其流中删除记录,还是无论如何将其保留 7 天?

  • 我看过这个问题 here但它没有回答我的问题。尤其是我的第三个问题!此外,这个问题对两种类似的技术进行了直接比较。它将帮助了解Kafka的人更快地学习Kinesis。

    最佳答案

  • 在KCL配置中,有一个“appName”部分对应“Application Name”,与Kafka中的“consumer group”相同。对于每个使用者组(即 Kinesis Streams 使用者应用程序),都有一个 DynamoDB 表。您可以在此处查看 DynamoDB 示例(KCL 应用程序名称为“quickstats-development”):AWS Kinesis leaseOwner confusion
  • 不,据我所知,没有。 “Kinesis Streams”类似于 Kafka,但除此之外,没有太多图形表示。
  • 是的。每个 Kafka 消费者组在 Kinesis 中表示为不同的 DynamoDB 表。这样,不同的 Kinesis 消费者应用程序可以独立使用相同的记录。 Kinesis 中的 checkpoint 是 Kafka 的 Offset 值。 DynamoDB 中的检查点是 Kinesis 分片中读取点的光标。阅读此答案以获取类似示例:https://stackoverflow.com/a/42833193/1622134
  • 关于apache-kafka - Kinesis如何实现Kafka风格的Consumer Groups?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50190549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com