Azure Functions 事件中心检查点是否适用于多个实例?
Do Azure Functions Event Hub checkpoints apply to multiple instances?
我有一些关于扩展 Azure Functions 和事件中心触发器的问题。我知道 AF 应用程序在某处存储了一个检查点编号(我认为是 Azure 存储),但我想知道当 AF 扩展或更改时这适用于什么(亲和力)。
- 如果我有一个包含消息的现有事件中心并重新部署 AF 应用程序,它会使用新的检查点从头重新启动,还是会从它停止的地方开始?似乎它应该以某种方式从该 AF 应用程序的最后一个检查点开始。
- 如果我在使用事件中心触发器的 AF 应用程序中更改函数的名称,它会保留相同的检查点还是重新开始?
- 如果我 stop/start AF 应用程序,它会失去它的位置吗?似乎不应该,因为它存储在外部,但我不知道它们如何相互映射。
- AF扩容时,是多个实例共享同一个检查点,还是后续实例从头开始,各有各的?后者似乎不太可能。根据我的阅读,为每个 AF 应用程序实例创建了一个新的 EventProcessorHost,但它们都共享相同的检查点吗?
- 向上扩展时,新的 AF 应用程序实例是从 existing/initial 实例的检查点开始,还是新的 EPH 从头开始?
以防万一,我在开发中使用 C# DLL 和 VS2015,在 building/deploying 中使用 VSTS。
事件中心检查点保存在每个消费者组的每个分区中。因此,如果您的集线器有 2 个分区和 3 个消费者组,它将有 6 个检查点。
您可以为您的函数触发器显式定义一个消费者组:
EventHubTrigger("myhub", ConsumerGroup = "mygroup")
否则将使用默认值 $Default
。所以,对于你的问题:
如果给定的消费者组存在检查点,它将从这些检查点重新启动。
功能名称不重要,它基于消费者群体。
重启后,应用将从检查点开始。
多个实例共享同一个检查点。工作原理:每个分区都将被其中一个实例锁定,因此来自该分区的事件在任何给定时间都只会由单个实例处理。相同的实例将相应的检查点更新为新的偏移量。
新实例将从现有检查点开始,一旦它设法锁定相应的分区。
请注意,分区数量限制了可以并行处理事件的实例数量(对于一个消费者组)。
我有一些关于扩展 Azure Functions 和事件中心触发器的问题。我知道 AF 应用程序在某处存储了一个检查点编号(我认为是 Azure 存储),但我想知道当 AF 扩展或更改时这适用于什么(亲和力)。
- 如果我有一个包含消息的现有事件中心并重新部署 AF 应用程序,它会使用新的检查点从头重新启动,还是会从它停止的地方开始?似乎它应该以某种方式从该 AF 应用程序的最后一个检查点开始。
- 如果我在使用事件中心触发器的 AF 应用程序中更改函数的名称,它会保留相同的检查点还是重新开始?
- 如果我 stop/start AF 应用程序,它会失去它的位置吗?似乎不应该,因为它存储在外部,但我不知道它们如何相互映射。
- AF扩容时,是多个实例共享同一个检查点,还是后续实例从头开始,各有各的?后者似乎不太可能。根据我的阅读,为每个 AF 应用程序实例创建了一个新的 EventProcessorHost,但它们都共享相同的检查点吗?
- 向上扩展时,新的 AF 应用程序实例是从 existing/initial 实例的检查点开始,还是新的 EPH 从头开始?
以防万一,我在开发中使用 C# DLL 和 VS2015,在 building/deploying 中使用 VSTS。
事件中心检查点保存在每个消费者组的每个分区中。因此,如果您的集线器有 2 个分区和 3 个消费者组,它将有 6 个检查点。
您可以为您的函数触发器显式定义一个消费者组:
EventHubTrigger("myhub", ConsumerGroup = "mygroup")
否则将使用默认值 $Default
。所以,对于你的问题:
如果给定的消费者组存在检查点,它将从这些检查点重新启动。
功能名称不重要,它基于消费者群体。
重启后,应用将从检查点开始。
多个实例共享同一个检查点。工作原理:每个分区都将被其中一个实例锁定,因此来自该分区的事件在任何给定时间都只会由单个实例处理。相同的实例将相应的检查点更新为新的偏移量。
新实例将从现有检查点开始,一旦它设法锁定相应的分区。
请注意,分区数量限制了可以并行处理事件的实例数量(对于一个消费者组)。