Azure 应用服务计划:Function 与 App Service 有何区别?

33
在托管Azure Function于应用服务计划时,与使用与同一应用服务计划相关联的应用服务(编辑:用于restful API)相比是否有任何显著差异?我认为唯一的区别是Function提供了额外的开箱即用触发器。除此之外,还有其他差异会导致偏好一个而非另一个吗?
我还想确认,在未在应用服务计划上配置扩展性时,将Azure Function托管于应用服务计划中实际上可能会限制扩展性。据我所知,当使用消费或高级托管且无需其他配置时,Function会自动按需进行扩展。
3个回答

34
当在App Service计划中托管Azure函数时,与使用与同一App Service计划相关联的App Service相比,是否有任何显着差异?我认为唯一的区别是函数提供了额外的开箱即用触发器。有没有我遗漏的差异会导致更喜欢其中之一? 一个Azure函数与一个App Service不同。Azure函数由外部事件或定时器触发,然后执行函数的代码。当在消费计划上托管时,该执行允许运行最多5或10分钟。如果需要更长的执行时间,则需要在App Service计划上运行它。App Service可以托管您创建的任何应用程序。例如网站(连续运行且无需在开始执行某些操作之前触发)或api。 正确的是,在App Service计划中托管Azure函数时,您负责确保应用程序服务已扩展以允许函数在负载下良好运行。这就是为什么消费计划设计为处理此问题,以便开发人员可以专注于功能而无需担心基础架构的原因。 因此,在集成方案的情况下,Azure函数非常适合。对于网站,App Service可能是最佳解决方案。 首先,有一定的甜点。如果流量足够大,基于消费计划的Azure函数可能比拥有专用的应用服务计划更加昂贵。当然,这取决于许多因素(CPU使用率、请求持续时间等)。此外,您将无法开箱即用地使用诸如Asp.Net Core中间件之类的内容。 最后,我认为,如果您的API变得足够大,管理单个asp.net核心解决方案可能比必须管理许多带有小函数的Azure函数或带有许多函数的一个Azure函数项目更容易,但是,嘿,这只是我的意见(说实话,我还没有处理过它)。 一些要考虑的资源:

谢谢Peter。我应该提到这个问题是在托管一个RESTful API而不是一个UI应用程序的上下文中。在这种情况下,我没有看到Function和App Service之间有太大的区别,但如果我漏掉了什么,请纠正我。 - scottctr
@scottctr,我很好奇你的选择和经验。你选择了什么?你认为你做出了正确的决定吗?如果是的话,为什么?如果你选择了另一种选项,为什么会这样? - lcj
@lcj,自从我发了这个问题以来,我已经使用了很多Azure功能和应用服务,但我从未在自己的应用服务计划中托管过函数。我更喜欢使用函数,因为它们通常更快速创建且操作成本更低。如果由于冷启动、慢速缩放或长时间执行而无法满足需要,我只需使用应用服务即可。尽管如此,应用服务计划的减少了函数开发时间和更快的启动时间、无限制的执行时间以及更高响应速度的缩放使其仍然是一个可行的选择。 - scottctr
@scottctr,非常感谢您提供的信息。我看到有三个选项(无服务器、高级和应用服务)。我正在使用 bicep 进行构建,并且我使用的示例是应用服务。 - lcj
@scottctr,出于好奇并与主题相关,您如何处理存储库(数据库)?您只是将它们嵌入函数应用程序中还是有一个单独的库?我希望是前者。我还有一些辅助类,并从标头中获取信息。您是否遇到任何复杂性或这些都不是问题? - lcj
@scottctr,抱歉发了这么多评论。我在看一个YouTube视频,似乎高级版(而不是消费版)会自动创建应用服务计划。https://www.youtube.com/watch?v=tzgB3cSUdNM&t=1506s - lcj

9
主要的区别在于付款方式:
  • Azure Functions 消费计划按执行次数付费
  • 使用 App Service(专用计划)中的 Azure Functions,您需要按每分钟分配的硬件付费。

如果您使用应用服务计划,则可以控制函数运行的 VNET。您可能有重要的安全要求需要这样做。

如果您在未配置扩展的应用服务中运行它,则吞吐量将受到分配硬件的限制。

详情请参见:https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale


VNet的观点很好。我们使用完全隔离的环境,所以我认为VNet对我们没有影响。 - scottctr

0

如果你的工作量有限且可预测,则部署支持VNET集成的Azure函数到AppService计划中,否则选择Premium计划,该计划将提供计算环境的自动缩放能力。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接