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



是否可能有多个扩展条件只扩展特定的webjob ?

例如:
第一个扩展条件触发了webjob #1的扩展(扩展到2个实例),但其他webjob仍然在一个实例上。

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

所以我希望在webjob上单独缩放,我希望一个webjob的缩放不影响其他webjob。

这可能吗?;)

简单地说,这是不可能的。你应该看看Azure Functions,或者如果你想把你的应用容器化,那就看看Azure Container Apps。

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

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

单例Web作业

如果你在某些webjobs中编写了不支持并发处理的代码,因此需要将其限制在单个实例中,那么你可以启用Singleton模式,而不是部署到单独的App Service Plan中。

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

<<p>触发功能/strong>
Webjobs SDK提供了一个SingletonAttribute,确保一个函数只运行一个实例,即使有多个主机web应用实例。

如果Singleton不能满足你的需求,那么重新评估为什么你不想把所有的web作业一起扩展。如果不能证明分割是合理的,那么基于规模原因的分割可能是一种反模式。如果你为一个拥有更多实例和资源的web应用程序付费,你通常可以在同一个应用程序服务计划上运行轻量级进程,从而节省运行新主机的成本,即使你出于管理原因将它们部署到单独的web应用程序中。

如果您正在运行高级应用程序服务计划sku,那么您可以约束单个Web应用程序在特定实例上运行,或者仅扩展到特定数量的实例。这是解释在这里:限制azure webjob的实例数量时,扩展,链接到MS Docs是坏的,但这里是它的一个版本:应用服务高密度托管

最新更新