C# 在Azure App Server中使用Hangfire进行计算成本高昂的操作的替代方案

C# 在Azure App Server中使用Hangfire进行计算成本高昂的操作的替代方案,c#,azure,asp.net-core,azure-functions,azure-web-app-service,C#,Azure,Asp.net Core,Azure Functions,Azure Web App Service,我有一个Asp.Net核心网站作为应用服务在Azure上运行。该网站的任务是列出各种计算,提供输入屏幕以输入计算值,然后提供报告以查看使用的计算输出和输入。此数据在Azure SQL数据库中持久化,而解决方案本身包含一个实际执行计算的类库项目。这些计算需要一系列输入参数,并返回一系列输出值,然后存储在数据库中。 大多数计算在计算上可能非常昂贵,并且可能需要相当长的时间才能运行(更糟糕的情况是,最多需要一个小时)。目前,我们已经合并了HangFire,以便实际的计算函数可以排队并在后台线程上运行

我有一个Asp.Net核心网站作为应用服务在Azure上运行。该网站的任务是列出各种计算,提供输入屏幕以输入计算值,然后提供报告以查看使用的计算输出和输入。此数据在Azure SQL数据库中持久化,而解决方案本身包含一个实际执行计算的类库项目。这些计算需要一系列输入参数,并返回一系列输出值,然后存储在数据库中。 大多数计算在计算上可能非常昂贵,并且可能需要相当长的时间才能运行(更糟糕的情况是,最多需要一个小时)。目前,我们已经合并了HangFire,以便实际的计算函数可以排队并在后台线程上运行

BackgroundJob.Enqueue(() => _calculationRunService.RunCalculation(runID));

这是可行的,但随着用户基数的增加和计算变得更加复杂,性能和可扩展性都不是很好。因此,我正在寻找其他Azure服务之一是否适合替换Hangfire部分的一些建议?

您说计算需要将近一个小时。你认为争论点是什么

  • 中央处理器?你需要更多的核心吗
  • 伊奥?您需要缓存(或)高端硬件吗
  • 记忆?当计算运行时,您是否看到大量分页
如果您在本地运行计算,您将非常了解瓶颈和要扩展的区域。然后,基于硬件和托管服务中的瓶颈,azure中有几个选项

用于CPU密集型工作

  • 应优先考虑。这是一种特殊的应用程序服务,可以进行配置
  • 如果是cpu密集型作业的另一种替代方案

以上两个是托管服务。或者,您可以使用更高级的硬件和ACU定义自己的虚拟机,以进行除此之外的任何定制

尝试查看Azure函数。它使用无服务器方法,非常适合此类任务