工人 - 难以选择最好的技术
Worker - having trouble to choose the best technology
我想创建一个微服务来并行处理我通过 Azure 服务总线通过 push
获得的一些任务。该微服务将通知 Azure 服务总线任务是否成功完成。见下图:
我已经考虑了这三个选项:
- 托管服务
- Azure Web 作业
- Azure 批处理
由于先决条件之一是此微服务需要在 .NET Core 3 中,是否有任何正当理由使用 Web 作业而不是托管服务?哪个选项可以保证稳健性和可扩展性?
根据我对 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 Functions with Service Bus Trigger,请参考官方文档Azure Service Bus bindings for Azure Functions
. A real serverless architecture is designed for microservice scenario as yours. Its limitation for the feature of scale out and max instances as the figure (comes from the document Azure Functions scale and hosting
) below be defined in host.json
文件。
所以如果不是真正的并行数据处理场景,我推荐Azure Functions,否则Azure Batch是并行大数据任务的最佳选择。 Azure WebJobs 只能使用 Azure App Service 来托管您的网站和 运行 具有连续作业的并行任务,但性能有限。托管服务在我看来,基于多线程内的webhook请求来处理并发任务,不推荐。
我想创建一个微服务来并行处理我通过 Azure 服务总线通过 push
获得的一些任务。该微服务将通知 Azure 服务总线任务是否成功完成。见下图:
我已经考虑了这三个选项:
- 托管服务
- Azure Web 作业
- Azure 批处理
由于先决条件之一是此微服务需要在 .NET Core 3 中,是否有任何正当理由使用 Web 作业而不是托管服务?哪个选项可以保证稳健性和可扩展性?
根据我对 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 Functions with Service Bus Trigger,请参考官方文档
Azure Service Bus bindings for Azure Functions
. A real serverless architecture is designed for microservice scenario as yours. Its limitation for the feature of scale out and max instances as the figure (comes from the documentAzure Functions scale and hosting
) below be defined inhost.json
文件。
所以如果不是真正的并行数据处理场景,我推荐Azure Functions,否则Azure Batch是并行大数据任务的最佳选择。 Azure WebJobs 只能使用 Azure App Service 来托管您的网站和 运行 具有连续作业的并行任务,但性能有限。托管服务在我看来,基于多线程内的webhook请求来处理并发任务,不推荐。