gpt4 book ai didi

azure - 防止同一 blob 多次触发横向扩展的 Azure Function 的机制是什么

转载 作者:行者123 更新时间:2023-12-04 06:27:13 25 4
gpt4 key购买 nike

场景:

托管在应用服务计划上的 Azure 函数,并扩展到 5 个实例。 Azure 函数由 Blob 触发。

问题:

是否有任何文档解释了阻止横向扩展的 Azure Functions 多次处理同一 Blob 的机制?我这么问是因为该函数有多个实例正在运行。

最佳答案

同意@Peter的观点,以下是我的理解供引用,如有不对请指正。

Blob 触发机制相关信息存储在我们的 Function 应用程序的 Azure 存储帐户中(由应用程序设置 AzureWebJobsStorage 定义)。锁位于名为 azure-webjobs-hosts 的 Blob 容器中还有一个队列azure-webjobs-blobtrigger-<FunctionAppName>供内部使用。

查看同一部分中的另一部分 comment .

Normally only 1 of N host instances is scanning for new blobs (based on a singleton host id lock). When it finds a new blob it adds a queue message for it and one of the N hosts processes it.

因此,在第一步中——扫描新的 blob,扩展功能不参与。单例主机 ID 锁是通过 blob 租约实现的,如 @Peter 提到的(检查 locks/<FunctoinAppName>/host 中的 blob azure-webjobs-hosts )。

一旦内部队列开始接收新 blob 的消息,横向扩展功能就会开始工作,因为主机实例会一起获取和处理消息。当处理 Blob 消息时,其他实例无法看到它,并且稍后会被删除。

此外,为了确保处理后的 blob 以后不会触发函数(例如在下一轮扫描中),另一种机制是 blob receipts .

关于azure - 防止同一 blob 多次触发横向扩展的 Azure Function 的机制是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com