【问题标题】:Azure Functions: How does the runtime update active instances?Azure Functions:运行时如何更新活动实例?
【发布时间】:2021-01-18 10:48:00
【问题描述】:

当开发人员将更新推送到他们的 Functions 代码库时,运行时是否会停止 Function 应用程序(作为高级计划托管)中的所有活动实例,然后全部更新并最终重新启动它们?还是像 stop-update-restart 单个实例一样将更新逐个推出到实例并继续到队列中的下一个实例?

【问题讨论】:

  • rolls out an update 是什么意思?你的意思是你更新函数代码还是微软更新天蓝色函数特性?
  • 我的意思是用户代码。编辑以消除混乱。
  • 为什么不直接询问 Azure 支持?
  • SO 有什么问题?很多微软员工监控相关标签。
  • 我下面提供的测试结果能回答你的问题吗?

标签: azure azure-functions azure-functions-runtime


【解决方案1】:

将功能更新代码从本地部署到 Azure 时,有两个步骤。首先是更新代码,其次是重新启动函数应用程序。以下是我的测试:

我在一个功能应用(带有高级计划)中有两个功能,名为Function1Function2。两个函数中的代码几乎相同,如下图所示。

现在请求两个函数的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? 的问题。我认为函数应用程序不会在重新启动之前创建与实例数一样多的实例。正如您所提到的,该功能是高级计划的主机。因此,函数应用重启后,它只会提供您在“Scale out”选项卡中为“Always Ready Instances”设置的实例数。 更多关于“Always ready instances pre-warmed instances”的信息,可以参考这个document

【讨论】:

  • 嗨。我的问题更多是关于多个实例会发生什么?在您的情况下,您有两个功能,我相信它们每个都在同一个实例中得到处理。如果规模控制器扩展到同一个应用程序中的多个活动实例,如何将更新推广到每个实例?函数应用重启时,是只创建一个实例还是和重启前的实例一样多?
  • @user246392 抱歉,我假设您想知道函数应用程序中的函数逻辑,而不是实例,因为您提到了does the runtime stop all active instances in a Function app 而不是does the runtime stop all active instances of a function。对于您上面提到的问题,我已经更新了我的答案,请查看我的答案中的“更新”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2019-05-20
相关资源
最近更新 更多