Hel*_*aon 2 azure azure-eventhub azure-functions
关于在物联网场景中使用EventHub的Azure功能的使用,只有几个问题.
谢谢
Lin*_*Toh 13
Event Hub-Triggered Function的每个实例仅由1个EventProcessorHost(EPH)实例支持.事件中心确保只有1个EPH可以在给定分区上获得租约.
对问题1的回答: 让我们用一个人为的例子来详细说明.假设我们从EventHub的以下设置和假设开始:
首次启用函数时,只有1个函数实例.让我们调用这个Function实例Function_0. Function_0将有1个EPH,可以在所有10个分区上获得租约.让这个EPH称为EPH_0,它将开始从分区0-9读取事件.从现在开始,将发生以下情况之一:
只需要1个Function实例 - 在Azure Functions的扩展逻辑启动之前,Function_0能够处理所有1000个.因此,所有1000条消息都由Function_0处理.
再添加1个函数实例 - Azure Functions的缩放逻辑确定Function_0看起来很迟钝,因此创建了一个新的实例
Function_1,从而生成EPH_1.事件中心检测到新的EPH实例正在尝试读取消息.事件中心将开始跨EPH实例对分区进行负载均衡,例如,分区0-4分配给EPH_0,分区5-9分配给EPH_1.
如果所有Function执行成功且没有错误,则EPH_0和
EPH_1检查点都成功完成,并处理所有1000条消息.当检查指向成功时,永远不应再次检索所有1000条消息.
添加N个更多函数实例 - Azure Functions的缩放逻辑确定Function_0和Function_1仍然缓慢,并将再次为Function_2 ... N重复工作流2 ,其中N> 9.Event Hub将在Function_0 ... 9实例之间对分区进行负载平衡.
Azure Functions的当前扩展逻辑的独特之处在于N >(分区数).这样做是为了确保总是有EPH的实例可以快速获得对分区的锁定.作为客户,您只需为您的Function实例执行时使用的资源付费,但您不需要为此过度配置付费.
对问题2的回答: EPH使用检查指向机制来标记最后已知的成功读取消息.可以将EventHub-Triggered功能设置为一次处理1条消息或一批消息.您选择的选项需要考虑以下事项:
1.消息处理速度 - 一次处理消息而不是一次处理单个消息是加快Azure功能工作流程跟上事件中心中传入消息的能力的因素之一.
2.重复容差 -如果由于功能代码中的错误/(2017年8月24日更新)超时/分区最少丢失导致检查指向失败,那么获得该分区租约的下一个EPH将开始从最后一个检索消息已知的检查站.Event Hub保证至少一次交付但不是最多一次交付.Azure Functions不会尝试更改该行为.如果没有重复消息是优先事项,那么您需要在工作流程中缓解它.因此,当检查指向失败时,如果您的功能正在批处理级别处理消息,则需要管理更多重复消息.
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |