Azure Functions:运行时如何更新活动实例?

问题描述

当开发人员向其 Functions 代码库推送更新时,运行时是否会停止 Function 应用(作为高级计划托管)中的所有活动实例,然后更新所有实例并最终重新启动它们?还是像停止-更新-重新启动单个实例那样将更新一一推送到实例,然后移至队列中的下一个实例?

解决方法

将函数更新代码从本地部署到azure时,有两个步骤。首先是更新代码,其次是重新启动函数应用程序。这是我在我身边测试的内容:

我在一个函数应用程序(带有高级计划)中有两个函数,名为 Function1Function2。两个函数中的代码几乎相同,如下面的屏幕截图所示。 enter image description here

enter image description here

现在请求两个函数的url来触发(先触发Function1再触发Function2,间隔1秒)。他们将打印如下屏幕截图(从 1 到 79)的日志: enter image description here

现在我编辑本地函数代码发布到azure,然后日志打印到79。在部署过程中,两个函数仍然正常打印日志,直到函数app重启(请参考下面两张截图) )。 enter image description here enter image description here

根据测试,我们可以知道在部署过程中代码更新时,函数可以正常运行,直到函数应用重启。 你的问题的答案是部署会更新所有的函数代码,最后只重启函数应用(只重启一次)

==================================更新============ ====================

关于If the scale controller scales to multiple active instances in the same app,how are updates rolled out to each instance?的问题。我认为它会在更新代码时允许实例运行,但是当完成更新代码时函数应用程序将重新启动,当重新启动函数应用程序时,所有正在运行的实例将被中断。

对于您关于 When the function app restarts,does it create only one instance or as many as the instance count before the restart? 的问题。我认为函数应用程序不会在重新启动之前创建与实例数一样多的数量。正如您所提到的,该功能是托管在高级计划中的。因此,在函数应用重启后,它只会提供您在“横向扩展”选项卡中为“始终就绪实例”设置的实例数。 enter image description here 有关“Always ready 实例预热实例”的更多信息,您可以参考此document