[英]How does Kinesis achieve Kafka style Consumer Groups?
在Kafka中,我可以将我的主题分成许多分区。 我不能拥有比Kafka中的分区更多的消费者,因为分区用作扩展主题的一种方式。 如果我有更多的负载,我可以增加分区的数量,这将允许我增加消费者的数量,这将允许我在给定主题上有更多的线程/进程处理。
在卡夫卡,有一个消费者群体的概念。 如果我们在一个主题上有10个消费者组,则每个消费者组将有机会处理主题中的每条消息。 消费者群体仍然利用分区的可扩展性(即每个消费者群体可以拥有最多'n'个消费者,其中'n'是主题上的分区数量)。 这是卡夫卡的美感,可扩展性和多声道阅读是两个独立的概念,有两个单独的旋钮可以转动。
在Kinesis中,我们被告知,如果您使用Kinesis Library Client,您可以通过定义不同的Kinesis应用程序获得与使用者组相同的功能。 换句话说,我们可以让不同的Kinesis应用程序独立地流式传输来自同一流和不同时间的所有记录。
我们还被告知“Amazon Kinesis客户端库(KCL)会自动为每个Amazon Kinesis应用程序创建一个Amazon DynamoDB表,以跟踪和维护状态信息,例如重新分片事件和序列号检查点。”
好的,所以我准备开始阅读这里的KCL代码了 ,但是我希望有人可以回答这些问题,以节省一些时间。
我在这里看到了这个问题,但它没有回答我的问题。 特别是第三个问题! 此外,这个问题直接比较了两种类似的技术。 它将帮助了解卡夫卡的人,更快地学习Kinesis。
在KCL配置中,有一个“appName”部分,它对应于“Application Name”,与Kafka中的“consumer group”相同。 对于每个使用者组(即Kinesis Streams Consumer Application),都有一个DynamoDB表。 你可以在这里看到一个示例DynamoDB(KCL appName是'quickstats-development'): AWS Kinesis leaseOwner confusion
不,据我所知,没有。 “Kinesis Streams”类似于Kafka,但除此之外,没有太多的图形表示。
是。 每个Kafka Consumer-Group都表示为Kinesis中的不同DynamoDB表。 这样,不同的Kinesis Consumer Applications可以独立地使用相同的记录。 Kinesis中的检查点是Kafka的Offset值。 DynamoDB中的检查点是Kinesis分片中读取点的光标。 阅读此答案的类似示例: https : //stackoverflow.com/a/42833193/1622134
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.