gpt4 book ai didi

.net - 在 Azure 中并行运行的任务数量有限

转载 作者:行者123 更新时间:2023-12-03 03:00:30 26 4
gpt4 key购买 nike

寻找合适的技术选择,最好是 MS Azure PaaS(所谓的“无服务器”),因为这需要在 Azure 中运行。

问题/条件:

运行一组 N 个完全独立的任务,同时最多同时运行 M 个任务。

  1. 每个任务的启动都可以异步触发(基本上是是 SSIS 包的开始),所以我不需要阻塞等待。
  2. 限制同时进行的任务数量(如上所述)
  3. 我无法订阅任务完成的自动通知,我只能在外部显式查询该信息(从 SSISDB - 因此实际上可以通过单个查询查询所有正在运行的任务的状态)
  4. 还有一些额外的要求,例如任务失败时重试等。

考虑到该解决方案的相关部分可以在 .NET 中实现,我们的想法不是从头开始编写整个系统(尽管它可能是最简单的),而是使用一些 Azure 云功能。

到目前为止,我已经研究了 Azure 队列/服务总线、函数、Azure 批处理。但例如我认为 Bacthes 在这里的适用性不是很好,因为我的任务是异步的,并且它们会消耗 SQL Server (SSIS) 的计算资源。但可能我只是错了,这仍然是 Azure 批处理的一个很好的使用场景。你能建议一下吗?

毕竟,它可能不一定是 Azure 解决方案,通过某种适当的 .NET 技术/框架解决,并作为持久功能(或其他某种无服务器方法)部署到 Azure,但这不太理想。

最佳答案

我将构建一个 SSIS“主包”来调用您的 SSIS 子包。可以满足您的所有要求:

  1. 在控制流上,为每个 SSIS 子包创建一个执行包任务。让它们不受优先级约束的连接,它们将异步启动。

  2. 对于主包,设置属性“最大并发可执行文件数”:https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.package.maxconcurrentexecutables.aspx

  3. 查询 SSISDB SQL 表以获取进度,例如https://github.com/yorek/ssis-queries

  4. 在主包中,将每个执行包任务放入 For 循环容器中,例如http://microsoft-ssis.blogspot.com.au/2014/06/retry-task-on-failure.html

关于.net - 在 Azure 中并行运行的任务数量有限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com