服务结构和扩展集群中的长时间运行任务

时间:2017-08-08 21:06:02

标签: azure azure-service-fabric azureservicebus azure-servicebus-queues

我们正在使用Azure Service Fabric(无状态服务),它从Azure Service Bus Message Queue获取消息并对其进行处理。这些任务通常需要5分钟到5个小时。

忙碌时我们想要扩展服务器,当它变得安静时,我们想再次缩小。

我们如何在不中断长时间运行任务的情况下进行扩展?有没有办法告诉Service Fabric哪个服务器可以自由扩展?

1 个答案:

答案 0 :(得分:1)

  1. <强> Azure Monitor Custom Metric

    • 整合您的SF服务 EventFlow。例如,让它将日志发送到Application Insights

    • 在处理您的任务时,请发送一些指示该任务的日志 它正在进行中

    • 只有在没有指示该计算机的日志的情况下,才能在Azure监视器中配置custom metric 正在进行的任务

  2. 这里的权衡是等待所有事件完成,直到可能发生缩放。

    1. 有一篇很好的文章解释了如何 Scale a Service Fabric cluster programmatically
    2. 这是另一种需要进行一些编码的方法 - Automate manual scaling

      • 开发另一项服务,作为S​​F应用程序的一部分或作为VM扩展。这里的要点是使服务在集群中的所有节点上运行并跟踪任务执行的状态。

      • 有一个明确定义的步骤,如何从群集中手动排除SF节点 -

      • 使用意图“RemoveNode”运行Disable-ServiceFabricNode以禁用您要删除的节点(该节点类型中的最高实例)。

      • 运行Get-ServiceFabricNode以确保节点确实已转换为已禁用。如果没有,请等待节点被禁用。你不能急于这一步。
      • 按照快速入门模板库中的示例/说明,在该Nodetype中将VM的数量更改为1。删除的实例是最高的VM实例。
      • 依此类推......在Scale a Service Fabric cluster in or out using auto-scale rules查找更多信息。这里要说的是这些步骤可以自动化
    3. 在新服务中实现扩展逻辑,以监视哪些节点已完成其任务并保持空闲以使用前面步骤中描述的指令进行扩展。

      希望这是有道理的。

      非常感谢@ tank104帮助我详细阐述答案!