【问题标题】:CosmosDB change feed, leases and azure functionsCosmosDB 更改提要、租约和 azure 函数
【发布时间】:2019-07-04 22:01:43
【问题描述】:

我最近开始使用 Azure CosmosDB 和函数。在阅读文档https://docs.microsoft.com/pl-pl/azure/cosmos-db/change-feed-processor 时,我发现了一些对我来说很难理解的东西。实际上是否可以在许多函数之间共享一个更改提要,以便它们将由一个相同的数据库操作触发?什么是租赁集合,它解决了什么问题。租赁的目的是什么?我想对这些术语有一个基本的解释。在我提供的链接中,据说可以在两个功能之间共享租约,但据说租约对象具有所有者属性。

【问题讨论】:

标签: azure azure-functions azure-cosmosdb serverless


【解决方案1】:

是的,您可以从同一个更改中触发多个功能。但是,这需要您为他们单独租约。它们可以存在于同一个租约集合中,但它们需要不同的前缀。有一个设置。在 Azure 函数中,它是 leaseCollectionPrefix 属性属性。

与 Cosmos DB 中的任何其他文档一样,租约实际上只是用于跟踪此更改提要处理器的使用者并保存一些检查点,以便他们知道在您的应用重新启动时从哪里继续。

【讨论】:

  • 哦,我明白了,但现在我有另一个问题。容器被分割成包含逻辑分区的物理分区。每个逻辑分区是否有单独的更改提要?如果是这样,如果两个 azure 函数共享相同的提要,是否意味着一个分区有两个租约?
  • @Alienown 不,更改提要是每个容器一个。每个物理分区都将在该单个更改源实例中的单独线程中进行处理。如果为具有相同租约的该集合创建了更多更改提要,则其中一些物理分区租约/线程将被丢弃,新应用程序将拾取它们。它们就是变更源的扩展方式。
  • 好吧,还有几个问题(我希望如此)。为什么我需要两个函数来拥有不同的租约,而且 - 如果它们绑定到由不同的更改馈送处理器(不同的前缀)处理的租约,它们如何对注册在与函数不同的租约上的数据库更改做出反应当前绑定到(“是的,您可以从同一个更改中触发多个功能”)?
  • 您可能希望以不同的方式处理更改,或者您可能对特定文档感兴趣,因为在收到文件之前更改提要没有任何类型的过滤。
  • 所以给定同一个分区上的两个文档,它们将只登陆具有针对该分区的租约前缀的函数,对吗?由于不同的前缀,其他函数可能无法获得该更改。是这样的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2019-11-01
相关资源
最近更新 更多