Cosmos DB Change Feed 的时间分辨率是多少?
What is the time resolution of Cosmos DB Change Feed?
据我了解(例如来自 here),Cosmos DB 更改源不保证每次更新都会触发事件。例如,当对同一个文档的两次更新几乎同时发生时,更改源处理器(例如,一个 Azure 函数侦听更改源)可能只被触发一次,即两次更新中的较晚一次。首先,我的理解正确吗?如果是:
- 根据您的经验,更新的典型最小时间间隔是多少,以便为每个事件单独触发更改事件? (不是精确值,但只是数量级就已经有用了。)
- 这个时间间隔有 SLA 吗?
更改源是基于轮询而不是基于事件的,但这取决于您使用增量模型轮询更改的频率。
处理器只跟踪每个分区读取的最高 LSN,并请求从该书签点开始的下一批更改(按 LSN 顺序)。
每次更新文档时,其关联的 LSN 都会增加,因此,为了在变更源中 return 编辑特定版本,变更源处理器需要请求包含该 LSN 的批次在文档更新之前。
对于 Azure 函数,您可以减少 feedPollDelay
以降低错过更改的可能性
(Optional) The time (in milliseconds) for the delay between polling a
partition for new changes on the feed, after all current changes are
drained. Default is 5,000 milliseconds, or 5 seconds.
如果您的更改非常接近,您可能仍然会错过它们。有一个“full fidlelity change feed”选项会在某个时候出现,它将 return 所有更改,但我不确定如何进入预览版或何时将正式发布并与 Azure 功能集成。
据我了解(例如来自 here),Cosmos DB 更改源不保证每次更新都会触发事件。例如,当对同一个文档的两次更新几乎同时发生时,更改源处理器(例如,一个 Azure 函数侦听更改源)可能只被触发一次,即两次更新中的较晚一次。首先,我的理解正确吗?如果是:
- 根据您的经验,更新的典型最小时间间隔是多少,以便为每个事件单独触发更改事件? (不是精确值,但只是数量级就已经有用了。)
- 这个时间间隔有 SLA 吗?
更改源是基于轮询而不是基于事件的,但这取决于您使用增量模型轮询更改的频率。
处理器只跟踪每个分区读取的最高 LSN,并请求从该书签点开始的下一批更改(按 LSN 顺序)。
每次更新文档时,其关联的 LSN 都会增加,因此,为了在变更源中 return 编辑特定版本,变更源处理器需要请求包含该 LSN 的批次在文档更新之前。
对于 Azure 函数,您可以减少 feedPollDelay
以降低错过更改的可能性
(Optional) The time (in milliseconds) for the delay between polling a partition for new changes on the feed, after all current changes are drained. Default is 5,000 milliseconds, or 5 seconds.
如果您的更改非常接近,您可能仍然会错过它们。有一个“full fidlelity change feed”选项会在某个时候出现,它将 return 所有更改,但我不确定如何进入预览版或何时将正式发布并与 Azure 功能集成。