Azure Functions 和 Azure Durable Function 之间有什么区别

Whats the difference between Azure Functions and Azure Durable Function

持久函数是否在 activity 调用之前唤醒?

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

[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);
}

您似乎混淆了执行时间和最大不活动时间是 Azure 函数:

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

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

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

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

The portal example for time trigger