替代在Azure App Server中使用Hangfire进行计算量大的操作

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

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

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

这有效,但随着用户群的增加和计算变得更加复杂,它的性能和可伸缩性不是很高。因此,我正在寻找有关其他Azure服务之一是否适合替换Hangfire部分的建议?

c# azure asp.net-core azure-functions azure-web-sites
1个回答
0
投票

您说过计算需要将近一个小时。您如何看待竞争点

  • CPU?您是否需要更多核心
  • IO?您是否需要缓存(或)高端硬件
  • 内存?计算运行时,您是否看到很多分页?

如果您在本地运行计算,您将几乎了解瓶颈和要扩展的区域。然后,基于硬件和托管服务中的瓶颈,蔚蓝中有多个选择。

用于CPU密集型工作

  • WebJobs应该是首选。这是一种特殊的应用程序服务,可以配置。
  • Azure Batch,如果是CPU密集型工作的另一种选择

以上两个是托管服务。或者,您可以定义具有更高硬件的VM和ACU来定义超出此范围的任何定制。

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