如何将长时间运行的进程托管到Azure Cloud中?

时间:2016-07-05 19:01:55

标签: azure

我有一个C#控制台应用程序,它将服务器位置上的15GB FireBird数据库文件提取到多个文件,并将数据从文件加载到SQLServer数据库。控制台应用程序使用System.Threading.Tasks.Parallel类来执行dataload从文件到sqlserver数据库的并行执行。

这是一个每周过程,需要6个小时才能完成。

将此(控制台应用程序)流程移至azure云 - WebJob或WorkerRole或任何其他云服务的最佳选择是什么?

如何在迁移到云后缩短执行时间(6小时)?

如何实施建议的选项?请提供指针或代码示例等。

非常感谢您对详细评论的帮助。

由于

巴努•。

2 个答案:

答案 0 :(得分:2)

让我对你的这个问题进行一些思考

  

"将此(控制台应用程序)进程移动到的最佳选项是什么   azure cloud - WebJob或WorkerRole还是其他任何云服务?"

首先,您可以使用WebJob和WorkerRole完成任务,但我建议您使用WebJob。

关于WebJob的PROS是:

答案 1 :(得分:1)

您可能想要查看Azure功能。您只需支付使用的处理时间,并且似乎没有最长的运行时间(与AWS Lambda不同)。

他们可以按计划安排或从其他活动开始。

如果您已经并行工作,可以将一些并行任务分解为单独的azure函数。除此之外,如何加快速度需要具体了解您要完成的任务。

过去当我试图加快这样的工作时,我会先处理包含当前时间或计算持续时间的处理过程中的日志消息(使用StopWatch类)。然后找出哪些方面可以改进。缓慢也可能是由于SQL Server端的速度减慢。您需要进行更多调查。但第一步始终是捕捉指标。

由于Azure功能可以横向扩展,您可能希望首先将文件中的数据分成较小的块,然后让函数处理每个块。然后启动这些块的多个并行处理。确保不要超过SQL Server可以处理的速度。