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

如何将长时间运行的进程托管到Azure云?,azure,Azure,我有一个C#控制台应用程序,它将服务器位置上的15GB FireBird数据库文件提取为多个文件,并将文件中的数据加载到SQLServer数据库。控制台应用程序使用System.Threading.Tasks.Parallel类执行从文件到sqlserver数据库的数据加载的并行执行 这是一个每周的过程,需要6小时才能完成 将此(控制台应用程序)进程移动到azure cloud-WebJob或WorkerRole或任何其他云服务的最佳选项是什么 移动到云计算后如何减少执行时间(6小时) 如何实施

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

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

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

移动到云计算后如何减少执行时间(6小时)

如何实施建议的方案?请提供指针或代码示例等

非常感谢您在详细评论中的帮助

谢谢


巴努

让我想一想你的这个问题

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

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

WebJob的优点是:

  • 部署时间更快,您可以在不做任何更改的情况下将控制台应用程序转换为在mintues()中持续运行的webjob

  • 内置计时器支持,您需要自己处理WorkerRole

  • 容错,当您的WebJob失败时,有内置的恢复逻辑


    • 让我来思考一下你的这个问题

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

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

      WebJob的优点是:

      • 部署时间更快,您可以在不做任何更改的情况下将控制台应用程序转换为在mintues()中持续运行的webjob

      • 内置计时器支持,您需要自己处理WorkerRole

      • 容错,当您的WebJob失败时,有内置的恢复逻辑


      您可能希望签出Azure功能。您只需为使用的处理时间付费,并且似乎没有最大运行时间(与AWS Lambda不同)

      它们可以按时间表设置,也可以从其他活动开始

      如果您已经在并行工作,您可以将一些并行任务分解为单独的azure函数。除此之外,如何加快速度还需要了解你想要实现的目标

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


      由于Azure函数可以横向扩展,您可能希望首先将文件中的数据划分为更小的块,并让函数处理每个块。然后加速对这些块的多重并行处理。请确保不要超出SQL Server的处理能力。

      您可能希望签出Azure功能。您只需为使用的处理时间付费,并且似乎没有最大运行时间(与AWS Lambda不同)

      它们可以按时间表设置,也可以从其他活动开始

      如果您已经在并行工作,您可以将一些并行任务分解为单独的azure函数。除此之外,如何加快速度还需要了解你想要实现的目标

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


      由于Azure函数可以横向扩展,您可能希望首先将文件中的数据划分为更小的块,并让函数处理每个块。然后加速对这些块的多重并行处理。确保运行速度不要超过SQL Server所能处理的速度。

      目前这两个答案都适用,但根据数据读取情况,您可能会发现您需要放大SQL db以获得更快加载数据所需的DTU。加载数据后,您可以缩小数据库的大小。目前这两个答案都可以,但根据数据读取情况,您可能会发现您需要放大sql数据库,以便更快地加载数据。一旦加载了数据,您就可以缩小数据库的规模。只需一个提示,Azure函数的每个运行实例都有一个时间限制。目前(截至2017年12月27日)为10分钟。也就是说,这篇文章中的其他观点是非常正确的。特别是当你能够并行运行时。如果该函数托管在非消费计划中,则时间限制将被取消。只是提醒一下,Azure函数的每个运行实例都有时间限制。目前(截至2017年12月27日)为10分钟。也就是说,这篇文章中的其他观点是非常正确的。特别是当你能够并行运行的时候。如果函数是在一个非消费计划中托管的,那么时间限制将被删除