【问题标题】:Whats the difference between Azure Functions and Azure Durable FunctionAzure Functions 和 Azure Durable Function 之间有什么区别
【发布时间】:2020-01-04 19:58:26
【问题描述】:

在调用活动之前,持久函数是否会唤醒?

我是关于实现调度程序的,而是使用其他库,例如 Hangfire 或 Quartz。我想实现将作为调度程序的持久功能。 我缺少的部分是,函数中发生了什么?在下一次活动调用之前,该函数是否会大喊大叫?每一个都叫执行?

[FunctionName("SchedulerRouter")]
public static async Task<HttpResponseMessage> HttpStart(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
    [OrchestrationClient]DurableOrchestrationClient starter, ILogger log)
{
    var data = await req.Content.ReadAsAsync<JObject>();
    var instanceId = await starter.StartNewAsync(FunctionsConsts.MAIN_DURABLE_SCHEDULER_NAME, data);
    return starter.CreateCheckStatusResponse(req, instanceId);
}

【问题讨论】:

标签: c# azure .net-core azure-functions azure-durable-functions


【解决方案1】:

看起来您将执行时间与 Max inactivity time is Azure 函数混淆了:

持久化函数只与单个调用的最大执行时间有关。对于“开箱即用”功能,超时时间为 10 分钟,对于持久功能,此限制将被删除。它还引入了对有状态执行的支持,这意味着对同一函数的后续调用可以共享局部变量和静态成员。这是“开箱即用”功能模式的扩展,需要一些额外的样板代码才能使一切按预期工作。更多细节在这里:https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview

持久功能和普通功能共享相同的计费模式,因此持久功能也会发生冷启动,尤其是在消耗计划中运行时。

在消费计划中运行的Azure函数会在一段不活动期间关闭,然后在有新请求到达时重新分配并重新启动,这称为:冷启动。您可以通过构建一个计时器触发功能来缓解这种情况,该功能每 5 到 10 分钟唤醒您的功能。但是,如果您的主机被 Azure 自动扩展或缩减,您仍然会不时地发生冷启动。 如果您想完全消除冷启动的可能性,您将不得不转向应用服务计划。附带说明一下,Azure 中的函数应用在设计上是无状态的,您在实现逻辑时应牢记这一要求。

【讨论】:

  • 谢谢@kevinj 的回答 :) 我对冷启动很熟悉,我只是想弄清楚引擎盖下的持久功能发生了什么。它真的会关闭直到下一次执行吗?或者它像你说的那样保持冷启动..是的,我有点困惑
  • @avisiboni,我用更多细节和对 MSDN 的参考更新了我的答案。
  • 太棒了!我很高兴现在一切都为你整理好了。
【解决方案2】:

您是否研究过 AZ Functions 的时间触发器?也许它更适合您的用例。基本上是一个 CRON 时间触发器,它根据 CRON 设置调用函数。

The portal example for time trigger

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2020-12-07
    • 2017-05-26
    • 2022-06-21
    • 2011-07-20
    • 2022-10-18
    • 2017-04-05
    相关资源
    最近更新 更多