尽管有触发器,但 azure 函数应用程序和 webjobs 在操作和缩放方面有何不同?

Despite triggers, how do azure function apps and webjobs vary in operation and scaling?

我目前使用 Azure webjobs 来处理来自 Azure 队列的请求。一天中,一个 Web 作业最多可以处理队列中的 5,000 条消息。每条消息的处理时间 最多 20 秒。 webjob 不断监听队列中的新消息。到达后,选择消息并对其进行处理。

我了解了函数应用程序,因为它们支持自动缩放和更友好的定价,所以我想选择它们,但我目前无法就是否选择它们做出明智的决定。

我主要担心的是工作负荷的影响。如果队列触发函数应用程序在 20 秒内仍在处理一条消息,并且其他 50 条消息被丢弃在队列中,因为它仍在处理第一条消息。它会在处理第二条消息之前等待第一条消息完成,还是会创建同一功能应用程序的另一个节点/实例来处理第二条消息和第三条....第 50 条消息?

如果它创建函数应用程序的多个实例,这些新创建的实例是否具有它们可以利用的最大资源,例如最多 6 个处理器和 5GB RAM,或者它们是否扩展到云中的可用资源?

假设 "automatic scaling and more friendly pricing" 意味着您正在查看消费计划,那么扩展确实取决于云中的可用资源。您可以配置函数一次从队列中取出多少消息,但函数不是单例,因此如果运行时检测到队列增长,那么它将启动它认为处理所有消息所需的尽可能多的函数实例及时留言。