Changefeed 处理器选项在这里得到了很好的描述-
我对此有几个问题-
leaseRenewInterval
:假设一个实例无法在 17 秒内更新其租约(默认租约更新间隔),是否会从该实例中删除该租约?或者饲料会等到leaseExpirationInterval
从它删除租约并给它一个机会在 60 秒内重新获得租约?leaseRenew
默认情况下会发生在 之后,checkpoint
还是两者都是独立的?即leaseRenew 可以发生在单独的线程之后leaserenewinterval
,而其他线程仍在批处理?我们已经看到了错误:
failed to checkpoint for owner 'null' with continuation token.
这怎么会发生?为什么所有者可以成为null
?我们也看到了异常
LeaseLostException
。即使 pod/实例没有关闭,这也会发生吗?我们不期望任何负载平衡,因为只有 1 个物理分区,但希望我们的系统具有容错性,因此我们确实有多个实例在运行,除 1 之外的所有其他实例将始终等待获取租约。在少数情况下,我们可以同时看到 3 个 Pod/实例具有相同物理分区的租约,或者我们可以说,它们获得了相同的租约。(我们最多可以有 1 个物理分区,(文档的 TTL 为 3 天,存储空间更少,因此我们预计不会超过 1 个物理分区))。这怎么可能发生?
编辑:
当前的设置:
leaseRenewInterval : 17s
leaseAcquireInterval: 13s
leaseExpirationInterval: 60s
feedPollDelay: 2s [only this is not the default]
ChangeFeed 处理器版本:
- 我们在我们的 Maven 中使用下面
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.8.0</version>
</dependency>
所以,我可以假设 CFP 版本是4.8.0