【问题标题】:Understanding parallelization of azure orchestration functions了解 Azure 编排功能的并行化
【发布时间】:2022-08-05 01:41:02
【问题描述】:

我在理解 azure 持久编排功能并行化(和扩展)如何在后台工作时遇到了一些困难。我指的是this官方文档。那里说:

因为编排器和实体函数实例是有状态的单例,所以每个编排或实体一次只能由一个工作人员处理是很重要的。

在并行运行多个编排函数时,“编排函数和实体函数实例都是有状态的单例”到底是什么意思?

假设我有一个客户端函数,它监听 HTTP 触发器,然后启动一个新的编排函数实例。如果我两次触发此客户端函数,编排函数的两个实例会以两个单独的实例 ID 并行运行,还是按顺序运行?每个实例都有自己的控制队列吗?

或者以this 为例,CallSubOrchestratorAsync总是在同一个编排实例上执行?如果是这样,这里有什么好处,因为它不会真正并行运行多个实例?还是这里的“并行化”只是指重启实例,根据不同的输入值重新套用历史表的过程?

    标签: azure azure-functions azure-durable-functions


    【解决方案1】:

    该声明 ”因为编排器和实体函数实例是有状态的单例" 不是真的有效,因为如果它是单例状态,则不能运行多个协调器函数实例。理想情况下,该语句应该只说 "因为编排器和实体函数实例是有状态的”。

    concurrency throttles link 明确确认编排器功能是并发运行的,可以在host.json 中限制并发。此外,并发和有状态的单例是相互排斥的。所以在我看来,这个说法需要更正。

    此外,每个编排实例可能没有自己的控制队列,但每个编排实例或实体都分配给一个控制队列,并确保只有一个工作人员处理这个队列,这样就不会有任何重复。

    综上所述,多个编排可以并行运行,但在每个编排中,只有活动功能并行运行,完整的编排工作流串行执行。希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 2011-04-21
      • 2015-04-17
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多