代码之家  ›  专栏  ›  技术社区  ›  Pankaj Rawat

独立缩放Azure函数(单个函数)

  •  0
  • Pankaj Rawat  · 技术社区  · 7 年前

    我用Visual Studio作为库项目创建了Azure函数,有12个函数的单个项目 例如

    enter image description here

    到目前为止,我的函数托管在专用的AppService计划中,其中一个函数(EventHub Listener)每天处理数百万条消息,因此它一直使用90%以上的CPU。

    因此,我们计划为这个单一的功能扩展或分离应用服务计划。我看到以下可能的解决方案

    1. 将专用应用程序服务工厂更改为消耗。(不确定定价影响或SLA)。

    2. 创建一个新项目,在该项目中移动单个函数,并在单独的应用程序服务计划中部署该函数。(所需代码和CI/CD管道更改。)

    3. 在2个AppService计划中部署相同的函数dll,并根据规模删除函数。(不确定是否可以使用Azure DevOps)。

    想知道更好的方法,如果客户不同意消费计划。

    2 回复  |  直到 7 年前
        1
  •  2
  •   MarkXA    7 年前

    与消费计划相比,专用计划的优势在于可预测性。在消耗计划上运行工作负载通常比在专用计划上运行相同的工作负载更快、更便宜,但是使用专用计划确实可以防止意外的使用高峰导致意外的成本高峰,还可以防止冷启动问题。

    如果您切换到消费模型(选项1),您将为单个函数的执行支付费用,因此无论您运行一个或两个函数应用程序,从这个角度来看都没有什么不同。您应该根据函数的独立性来决定如何拆分函数。如果您只将它们部署为一个单独的单元,那么坚持使用一个函数应用程序,但是如果您可能希望单独更新侦听器,请将其放在单独的项目中。

    如果您分成两个应用程序运行在单独的专用服务计划中,那么创建一个新项目(选项2)无疑是最干净的方法。但是,从技术上讲,将同一个项目部署到两个应用程序(选项3)是可能的-您只需要禁用不应使用应用程序设置在每个应用程序上运行的功能。创建名为的设置 AzureWebJobs.MyFunction.Disabled 有价值 true (见 https://docs.microsoft.com/en-gb/azure/azure-functions/disable-function#functions-2x---all-languages )

        2
  •  2
  •   4c74356b41    7 年前
    1. 不会帮助你,它可以缩放功能应用程序中的所有功能
    2. 那就行了
    3. 它与版本相同,只是有两个应用服务计划,而不是一个。

    更好的方法是-将这个函数隔离到一个单独的Azure函数应用程序中,然后您可以独立地扩展它。

    推荐文章