我不断将数据发布到已启用流的dynamoDB中。我正在使用KCL的DynamoDB apadter阅读此流。
我正在使用1名KCL工人和5个租约。在创建时,我的Dynamo表有1个分区(1个RCU和999WCU)。当我继续将数据发布到dynamo中时,分区的数量将增加,并且没有活动的分片。读取是正常的,直到活动分片的数量为5.只要它超过5,KCL就无法从其中一个分片中读取(tps正在被丢弃)。
是否有任何我可以设置的配置/参数,允许我使用固定的租约来读取增长的分片?
答案 0 :(得分:1)
您正在寻找maxLeasesPerWorker property。
来自javadoc:
即使有更多需要处理的分片,工人也不会获得超过指定的最大租约数量。这可以在工作人员受资源限制的情况下使用,或者在部署期间少量工作人员在少量时间内获取所有租约时防止租约抖动。
请务必记下javadoc中的警告:
请注意,设置较低的值可能会导致数据丢失(例如,如果没有足够的工作人员在所有分片上取得进展)。设置此属性的值时,必须确保有足够的工作人员来处理分片,并且应考虑将来的重新分片,可能在父分片上阻止的子分片,某些工作人员变得不健康等等。