为什么 "replay" 的行为可确保在 Azure 持久函数中可靠执行?
Why does The behavior of "replay" ensure reliable execution in Azure durable functions?
我认为 "replay" 的行为可确保 Azure 持久函数中的可靠执行,如下面 link 所述。
但是,我不知道为什么这意味着可靠以及"replay"和不"replay"之间的区别。
回复的行为非常complicated.I猜测不使用回复比使用重播更简单。
为什么持久函数使用重播?为什么 "replay" 的行为确保在 Azure 持久函数中可靠执行?
可靠执行是特别需要的,因为持久函数通常最适合涉及多个函数的复杂长期 运行ning 操作 - 协调器和 activity.
当运行使用消费计划时,您的函数应用程序可能会在 VM 之间移动,具体取决于您的函数 运行s 的时长。在这种情况下,您的函数应该能够 运行 从它在一个 VM 中停止的地方到下一个 VM。这基本上就是回放的用武之地。
你的函数基本上每次都在重新运行,以确保你的函数的当前状态与提交到 Azure 存储中的一样(持久函数用于外部状态 management/logging)。
请注意,这并不意味着您的函数每次都保持重新 运行,相反,它们的结果也会被存储,以便 "re-hydration"您的函数执行状态,而无需实际重新运行调整函数。
但要实现这一点,您的协调程序代码有一些您必须遵循的限制条件 documented。供参考,
- 确定性 - 不要使用在每次回放时给出不同输出的函数。如果您需要此类功能,请将它们移动到自己的 activity 功能中
- 非阻塞
- 没有异步操作 除了使用 Durable Functions 库进行的操作
- 避免无限循环
您可以阅读有关 Durable Functions 实现的底层模式的更多信息 - Event Sourcing - 以获取更多信息。
我认为 "replay" 的行为可确保 Azure 持久函数中的可靠执行,如下面 link 所述。
但是,我不知道为什么这意味着可靠以及"replay"和不"replay"之间的区别。
回复的行为非常complicated.I猜测不使用回复比使用重播更简单。
为什么持久函数使用重播?为什么 "replay" 的行为确保在 Azure 持久函数中可靠执行?
可靠执行是特别需要的,因为持久函数通常最适合涉及多个函数的复杂长期 运行ning 操作 - 协调器和 activity.
当运行使用消费计划时,您的函数应用程序可能会在 VM 之间移动,具体取决于您的函数 运行s 的时长。在这种情况下,您的函数应该能够 运行 从它在一个 VM 中停止的地方到下一个 VM。这基本上就是回放的用武之地。
你的函数基本上每次都在重新运行,以确保你的函数的当前状态与提交到 Azure 存储中的一样(持久函数用于外部状态 management/logging)。
请注意,这并不意味着您的函数每次都保持重新 运行,相反,它们的结果也会被存储,以便 "re-hydration"您的函数执行状态,而无需实际重新运行调整函数。
但要实现这一点,您的协调程序代码有一些您必须遵循的限制条件 documented。供参考,
- 确定性 - 不要使用在每次回放时给出不同输出的函数。如果您需要此类功能,请将它们移动到自己的 activity 功能中
- 非阻塞
- 没有异步操作 除了使用 Durable Functions 库进行的操作
- 避免无限循环
您可以阅读有关 Durable Functions 实现的底层模式的更多信息 - Event Sourcing - 以获取更多信息。