【问题标题】:How to host long running process into Azure Cloud?如何将长时间运行的进程托管到 Azure 云中?
【发布时间】:2016-07-06 03:45:48
【问题描述】:

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

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

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

迁移到云端后如何减少执行时间(6 小时)?

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

非常感谢您对 cme​​ts 的详细帮助。

谢谢

巴努。

【问题讨论】:

  • 目前这两个答案都有效,但根据读取的数据,您可能会发现您需要扩展 sql db 以获得更快加载数据所需的 DTU。加载数据后,您可以缩小数据库。

标签: azure


【解决方案1】:

让我考虑一下你的这个问题

“将此(控制台应用程序)进程移至 azure cloud - WebJob 或 WorkerRole 或任何其他云服务?”

首先你可以同时使用 WebJob 和 WorkerRole 来完成任务,但我建议你使用 WebJob。

关于 WebJob 的优点是:

【讨论】:

    【解决方案2】:

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

    他们可以按时间表设置或从其他活动开始。

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

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

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

    【讨论】:

    • 请注意,Azure 函数的每个运行实例都有时间限制。目前(截至 2017 年 12 月 27 日)是 10 分钟。也就是说,这篇文章中的其他观点非常有效。特别是如果您能够并行运行。
    • 如果函数托管在非消费计划中,时间限制将被取消
    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多