在Kafka中,我可以将我的主题分成许多分区。在Kafka中,我不能拥有比分区更多的消费者,因为分区是扩展主题的一种方式。如果我有更多的负载,我可以增加分区的数量,这将允许我增加消费者的数量,从而允许我在给定的主题上有更多的线程/进程进行处理。
在Kafka中,有一个消费者组的概念。如果我们在单个主题上有10个消费者组,则每个消费者组都有机会处理主题中的每条消息。消费者组仍然利用分区的可扩展性(即每个消费者组可以具有最多“n”个消费者,其中“n”是主题上分区的数量)。这就是kafka的美妙之处,可扩展性和多通道阅读是两个独立的概念,有两个独立的旋钮来控制。
在Kinesis中,我们被告知,如果您使用Kinesis Library Client,可以通过定义不同的Kinesis应用程序获得与消费者组相同的功能。换句话说,我们可以有不同的Kinesis应用程序独立地从同一流中以不同的时间流式传输所有记录。
我们还被告知,“Amazon Kinesis Client Library(KCL)会自动为每个Amazon Kinesis Application创建一个Amazon DynamoDB表,以跟踪和维护状态信息,例如重新分片事件和序列号检查点。”
在Kafka中,有一个消费者组的概念。如果我们在单个主题上有10个消费者组,则每个消费者组都有机会处理主题中的每条消息。消费者组仍然利用分区的可扩展性(即每个消费者组可以具有最多“n”个消费者,其中“n”是主题上分区的数量)。这就是kafka的美妙之处,可扩展性和多通道阅读是两个独立的概念,有两个独立的旋钮来控制。
在Kinesis中,我们被告知,如果您使用Kinesis Library Client,可以通过定义不同的Kinesis应用程序获得与消费者组相同的功能。换句话说,我们可以有不同的Kinesis应用程序独立地从同一流中以不同的时间流式传输所有记录。
我们还被告知,“Amazon Kinesis Client Library(KCL)会自动为每个Amazon Kinesis Application创建一个Amazon DynamoDB表,以跟踪和维护状态信息,例如重新分片事件和序列号检查点。”
好的,我准备开始阅读KCL代码这里,但我希望有人能回答以下问题以节省我的时间。
- KCL是如何实现的?
- 是否有图表说明该过程?
- 如果在所有先前的Kinesis应用程序都已经生产和消费记录之后启动新的Kinesis应用程序(MyKinesisApp1),那么新的Kinesis应用程序(MyKinesisApp1)是否仍有机会消费该记录?换句话说,Kinesis在处理完记录后是否从流中删除记录,或者无论如何都会将其保留7天?
我看到了这个问题这里,但它没有回答我的问题。特别是我的第三个问题!此外,这个问题直接比较了两种类似的技术。它将帮助那些了解Kafka的人更快地学习Kinesis。