作者:mobiledu2502923977 | 来源:互联网 | 2022-10-14 14:04
我想创建一个微服务来并行处理我通过push
Azure Service Bus 获得的一些任务。如果任务成功完成,此微服务将通知Azure服务总线。请参见下图:
我已经考虑了以下三个选项:
托管服务
Azure Web作业
Azure批处理
由于先决条件之一就是该微服务必须位于.NET Core 3中,因此是否有使用Web Jobs代替Hosted Services的正当理由?哪个选项可确保鲁棒性和可扩展性?
1> Peter Pan..:
根据我在Azure云上进行并行处理的知识并考虑您的方案,有以下三种解决方案作为候选选项,我认为这已经足够了。
Azure Web作业。众所周知,Azure仅支持在多个实例的Azure WebApps上运行的Continuous WebJobs,如下图所示Run Background tasks with WebJobs in Azure App Service
,其可伸缩性取决于Azure App Service的层数和应用程序实例的数量。此选项的性能有限,不适用于真正的并行计算。
Azure Batch(Azure云上真正的大规模并行和高性能计算)(HDInsight除外)。但是,如果没有繁重的数据处理任务,那么执行一些仅需要多线程中的并发功能的任务就太昂贵了。
带服务总线触发器的Azure函数,请参考正式文档Azure Service Bus bindings for Azure Functions
。真正的无服务器架构是为您的微服务方案设计的。Azure Functions scale and hosting
在host.json
文件中定义了如下图(来自文档)对横向扩展和最大实例功能的限制。
因此,如果不是真正的并行数据处理方案,我建议使用Azure Functions,否则Azure Batch是并行大数据任务的最佳选择。Azure WebJobs只能使用Azure App Service托管您的网站并运行带有连续作业的并行任务,但是性能有限。作为我的观点,托管服务不建议基于Webhook请求在多线程中处理并发任务。