.net - 适用于长时间运行任务的 Azure Service Fabric Actor

标签 .net azure azure-service-fabric

我对 Azure Service Fabric 非常陌生。根据我的研究,我非常热衷于将其用于特定的优化问题场景。然而,我在 MSDN 上没有找到任何详细信息来支持我的发现。

我的要求是我有一个 Web API,可以获取输入并将其转储到数据库。此输入用于运行优化算法,该算法通常需要大约 3-5 分钟。用户可能会提交多个请求,最终需要进行处理。

我目前认为每个优化输入产生一个新的 ASF 可靠的 actor 是一个不错的选择。但是,我不清楚 ASF 如何处理此类长时间运行且非即时的任务。

此外,我还怀疑集群内的资源利用率如何。我的最终目标是能够在需要并行时提交至少预定义数量的优化算法参与者无状态服务。

非常感谢您针对我所关心的问题提供的技术建议。对于这种情况,我应该考虑的是参与者还是无状态

最佳答案

我认为这里最重要的是在后台进行计算。优化算法运行时,服务/Actor 调用者不应一直等待。

要实现此目的,您需要接受一个命令,将其保存在某个地方(队列就可以很好),然后将 token 返回给调用者。该 token 可用于查询状态/进度。

Actor中执行此操作需要:

  • 使用 StateManager 保存一个队列,该队列保存作业
  • 注册一个计时器来处理工作。
  • 可选调用另一个(额外)Actor 来报告进度

无状态服务中执行此操作需要:

  • 外部队列(这是一个外部依赖项,会影响可用性)
  • 可选外部进度存储

有状态服务中执行此操作(附加选择)需要:

  • 使用 StateManager 保存 ReliableQueue
  • 定期检查此队列是否有来自 RunAsync 的工作。
  • 可选定期将进度存储在StateManager中。

我怀疑最适合这种情况的服务类型是有状态服务。 Here's一个对工作进行排队和处理的有状态服务示例。

关于.net - 适用于长时间运行任务的 Azure Service Fabric Actor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280825/

相关文章:

c# - Bindings 中的属性名称不区分大小写?

c# - 从表存储中检索一系列分区键的最有效方法

azure - 在 Service Fabric 集群上发布应用程序后 HttpContext.Session 为空

azure-service-fabric - Service Fabric 开发周期慢

.net - 我一直听说有大量的错误跟踪器,但 .net 中构建的却不多

c# - 从 SharePoint 中托管的 WCF 服务访问 SPFarm PropertyBag 时出现 SecurityException

c# - 是否可以将对象的方法发送给函数?

c# - 将自托管 SignalR 后端部署到 Azure

Azure SQL DTU 峰值处理想法?

c# - 在 Azure Service Fabric 中运行时更改配置