AWS Kinesis中的'Lease'究竟是什么?

4

我正在尝试使用Kinesis客户端库从Kinesis数据流中消费数据。我在努力熟悉Kinesis的概念。它没有详细介绍租赁(Lease)概念,而是直接跳入了租赁的使用。

简单来说,什么是Kinesis中的租赁(Lease)?


一个简单的解释是,租约是特定于流中的分片,并且一次只由一个工作节点持有。 - Rishit Dagli
2个回答

3

从高层次上看,DynamoDB表用于跟踪Kinesis应用程序流的状态。

'LeaseKey'是Kinesis分片ID的哈希值,并在DynamoDb表中用作哈希键。

因此,换句话说,当您的流在处理时,相应的DynamoDB表中会有每个分片的行。这些行包含与该分片当前处理状态相关的信息... 这被称为租赁信息。

您可以在此处查看有关每个租赁列在表中的完整表模式和元数据:

https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-ddb.html


1
欢迎来到SO!请知道这是垃圾邮件。你不能在这里宣传你的博客。请参见广告 - 10 Rep
请参阅什么是租赁表,另外还有:除了读取流数据之外,KCL 还在 DynamoDB 表中跟踪工作程序的状态和进度,我将其称为“租赁表”(表的名称和预配吞吐量可配置)。详情请见:使用 Amazon Kinesis 客户端库处理 Amazon DynamoDB 流 - pavol.kutaj

0
在计算机科学中,租约是一种合同,为其持有者在有限时间内赋予对某些资源特定的权利。由于它是有时限的,租约是用于资源串行化的锁的替代选择。
— 摘自Lease (computer science) - Wikipedia 这个概念(租约默认是临时安排)与传统的锁机制相反,后者在明确删除之前是无限期的。
在这种情况下,“租约持有人”是消费者应用程序的工作人员,“资源”是数据流中的分片。租约的当前快照(如上所述的“kinesis应用程序流状态”)位于DynamoDB的“租约表”中,并包含以下字段。
字段 注释
checkpoint 分片的最新检查点序列号。此值在数据流中的所有分片中都是唯一的。
checkpointSubSequenceNumber 当使用Kinesis生产者库的聚合功能时,这是一个扩展到检查点的内容,用于跟踪Kinesis记录中的单个用户记录。
leaseCounter 用于租约版本控制,以便工作程序可以检测其租约是否已被另一个工作程序占用。
leaseKey 租约的唯一标识符。每个租约特定于数据流中的一个分片,并且一次只由一个工作程序持有。
leaseOwner 持有此租约的工作程序。
ownerSwitchesSinceCheckpoint 自上次写入检查点以来,此租约已更改工作程序的次数。
hashrange 由PeriodicShardSyncManager用于运行周期性同步以查找租约表中缺失的分片,并在需要时为它们创建租约。
childshards 由LeaseCleanupManager用于查看子分片的处理状态,并决定是否可以从租约表中删除父分片。
shardID 分片的ID。
streamname 数据流的标识符,格式为account-id:StreamName:streamCreationTimestamp

— 来自什么是租赁表

显然,一个碎片只能由1个工作程序租用,而一个工作程序可以(在有>1个碎片的情况下应该)租用多个碎片(我建议3:1的比率)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接