我是Azure Service Fabric的新手。根据我的研究,我非常热衷于将其用于特定的优化问题场景。但是,我没有在MSDN上找到任何有关我的调查结果的详细信息。
我的要求是我有一个获取输入并转储到数据库的Web API。此输入用于运行优化算法,通常需要大约3-5分钟。用户可能会提交多个请求,最终需要处理这些请求。
我目前认为每个优化输入产生一个新的ASF可靠演员是一个很好的选择。但是我不清楚ASF如何为长期运行而不是瞬间完成的任务起作用。
此外,我怀疑群集中的资源利用率如何。我的最终目标是在并行需要时能够提交至少预定义数量的优化算法 actor 或无状态服务。
非常感谢您对我所关注的问题的技术建议。在这种情况下我应该考虑演员或无状态。
答案 0 :(得分:4)
我认为这里必不可少的是在后台进行计算。在优化算法运行时,服务/演员呼叫者不应该等待。
要完成此任务,您需要接受一个命令,将其保存在某个地方(Queue会做得很好),将一个令牌返回给调用者。令牌可用于查询状态/进度。
在演员中执行此操作需要:
StateManager
来保存一个包含作业的队列在无状态服务中执行此操作需要:
在有状态服务(附加选项)中执行此操作需要:
StateManager
来保留ReliableQueue
。RunAsync
的工作。 StateManager
。我怀疑为此方案准备的服务类型是有状态服务。 Here's排队和处理工作的有状态服务示例。
答案 1 :(得分:0)
我认为有状态和无状态的组合将是您的方案的一个很好的解决方案。使用有状态对请求进行排队,并使用无状态来处理(算法)请求。如果需要,SF群集将根据负载为群集中的其他节点创建新的无状态服务实例。有状态服务将是您的持久存储来存储请求(通过可靠的队列)和进度(可靠的字典)。有状态服务在集群中维护一个主副本和两个辅助副本。