azure - Azure Functions:运行时如何更新活动实例?
问题描述
当开发人员将更新推送到他们的Functions
代码库时,运行时是否会停止Function
应用程序中的所有活动实例(作为高级计划托管),然后全部更新并最终重新启动它们?或者更新是否像 stop-update-restart 单个实例一样逐个推出到实例并继续到队列中的下一个?
解决方案
将函数更新代码从本地部署到 Azure 时,有两个步骤。首先是更新代码,其次是重新启动函数应用程序。这是我在我身边测试的内容:
我在一个功能应用程序(带有高级计划)中有两个功能,名为Function1
和Function2
. 两个函数中的代码几乎相同,如下图所示。
现在请求两个函数的url来触发(先触发Function1再触发Function2,间隔1秒)。他们将打印如下截图(从 1 到 79)的日志:
现在我编辑本地函数代码并在日志打印到79之前发布到azure。在部署过程中,两个函数仍然正常打印日志,直到函数应用重启(请参考下面的两个截图)。
根据测试,我们可以知道在部署过程中代码更新到函数应用重启时,函数可以正常运行。您的问题的答案是部署将更新所有功能代码并最终重新启动功能应用程序(仅重新启动一次)。
==================================更新================ ================
对于你的问题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?
。我不认为函数应用程序会在重新启动之前创建与实例数一样多的实例。正如您所提到的,该功能是高级计划的主机。因此,函数应用重新启动后,它只会提供您在“横向扩展”选项卡中为“始终就绪实例”设置的实例
数。
关于“Always ready 实例预热实例”的更多信息,您可以参考此文档。
推荐阅读
- sed - xargs 和 sed 提取特定行
- javascript - 如何检查对象数组是否包含节点中的特定对象
- java - 单元测试 MessageListener 类
- node.js - Sinon callCount 始终为零
- express - 如何将中间件调用中的参数传递给中间件?
- javascript - Nuxt Auth 模块与 Auth0 提供程序导致重定向循环
- javascript - 如何看穿 p5.js 中的矩形?
- java - 使用 json simple 修改嵌套的 JSONObject
- node.js - 如何使用 mocha 递归地运行多个集成测试而不将它们的钩子全部组合在一起?
- html - 你如何编写一个盒子阴影来创建这个设计?