Azure功能事件中心检查点是否适用于多个实例?

时间:2017-09-26 11:39:35

标签: azure azure-functions azure-eventhub

我对扩展Azure功能和事件中心触发器有一些疑问。我知道AF应用程序在某个地方存储了一个检查点号码(我认为是Azure存储),但我想知道当AF放大或更改时这适用于什么(亲和力)。

  1. 如果我有一个包含消息的现有事件中心并重新部署AF应用程序,它是否会从一开始就使用新的检查点重新启动,还是从它停止的位置开始?好像应该以某种方式从该AF应用程序的最后一个检查点开始。
  2. 如果我更改AF应用中使用事件集线器触发器的功能名称,它是保留相同的检查点还是重新开始?
  3. 如果我停止/启动AF应用程序,它会失去位置吗?似乎不应该因为它存储在外部,但我不知道它们是如何相互映射的。
  4. 当AF放大时,多个实例是否共享同一个检查点,或者后续实例是从头开始并拥有自己的?后者似乎不太可能。根据我的阅读,为每个AF应用程序实例创建了一个新的EventProcessorHost,但它们是否共享同一个检查点?
  5. 向上扩展时,新的AF应用实例是从现有/初始实例的检查点开始,还是新的EPH从头开始?
  6. 如果重要,我使用C#DLL和VS2015作为开发人员,使用VSTS进行构建/部署。

1 个答案:

答案 0 :(得分:3)

每个使用者组的分区保存事件中心检查点。因此,如果您的集线器有2个分区和3个用户组,则它将有6个检查点。

您可以为功能触发器明确定义使用者组:

EventHubTrigger("myhub", ConsumerGroup = "mygroup")

否则将使用默认值$Default。那么,对你的问题:

  1. 如果给定的使用者组有现有的检查点,它将从那些检查点重新启动。

  2. 功能名称并不重要,它基于消费者群体。

  3. 重启后,应用程序将从检查点开始。

  4. 多个实例共享相同的检查点。工作原理:每个分区都将被其中一个实例锁定,因此来自该分区的事件在任何给定时间都只能由单个实例处理。相同的实例会将相应的检查点更新为新的偏移量。

  5. 新实例一旦设法锁定相应的分区,就会从现有检查点开始。

  6. 请注意,分区数量限制了可以并行处理事件的实例数量(对于一个使用者组)。