Azure 应用服务可以扩展特定的 Web 作业吗?

问题描述 投票:0回答:2

是否可以有多个横向扩展条件,仅横向扩展特定的网络作业。

例如:
第一个扩展条件已触发 webjob #1 的扩展(扩展至 2 个实例),但其他 webjob 仍将位于一个实例上。

但是现在假设满足了另一个扩展条件,现在我需要扩展 webjob #2(扩展到 4 个实例)。

因此,我希望对网络作业进行单独缩放,并且我希望一个网络作业缩放不会影响其他网络作业。

这可能吗? ;)

azure azure-devops azure-web-app-service azure-webjobs azure-webjobs-continuous
2个回答
0
投票

简单来说,这是不可能的。您应该查看 Azure Functions,或者如果您想容器化您的应用程序,请查看 Azure 容器应用程序。


0
投票

Web 作业扩展与底层的应用程序服务计划相关。要在不编写自己的管理代码的情况下实现独立扩展,您需要将每个Web Job部署到它自己的Web App,并将每个Web Apps部署到它们自己的App Service Plan。然后,您可以根据需要扩展应用服务计划

对于 Web 作业,当您有不同的扩展需求时,常见的部署模型是根据作业的资源使用情况和执行频率将作业分组在一起,然后部署到多个主机,因此可以为需要的资源密集型处理保留一个应用服务计划与其他可能更轻量级的 Web 作业相比,可以纵向扩展和横向扩展。独立发布每个 Web 作业会非常昂贵且开销巨大,但您可以做到。

单例网络作业

如果您在某些网络作业中编写了代码,因此它不支持并发处理,因此需要限制为单个实例,那么您可以启用单例模式,而不是部署到单独的应用程序服务计划。

将连续作业设置为单例
如果连续作业设置为单例,它将仅在单个实例上运行,而不是在所有实例上运行。默认情况下,它在所有实例上运行。

触发功能
Webjobs SDK 提供了

SingletonAttribute
,确保即使有多个主机 Web 应用程序实例,也仅运行一个函数实例。

如果 Singleton 不能满足您的需求,请重新评估为什么您不想将所有 Web 作业一起扩展。如果您无法证明其合理性,则出于规模原因进行拆分可能是一种反模式。如果您为 1 个具有比另一个更高实例和资源的 Web 应用程序付费,则通常可以在同一应用程序服务计划上运行轻量级进程,并节省运行新主机的成本,即使您将它们部署到单独的 Web 应用程序以供使用管理原因。

如果您正在运行高级应用程序服务计划 SKU,则您可以限制单个 Web 应用程序在特定实例上运行或仅扩展到特定数量的实例。此处对此进行了解释:横向扩展时限制 azure webjob 的实例数量,MS 文档的链接已损坏,但这里是它的一个版本:应用程序服务高密度托管

© www.soinside.com 2019 - 2024. All rights reserved.