Azure 如何延迟服务结构运行时自动升级
我们的团队最近发生了一个事件,因为我们的无状态服务正在重新启动以进行azure运行时自动更新。其中一个服务在处理任务时处于强制关闭状态。这些任务可能需要长达4小时的时间 无论是通过代码还是配置,是否有一种方法可以让Azure知道我们的服务正忙,并且此时无法关闭Azure 如何延迟服务结构运行时自动升级,azure,azure-service-fabric,service-fabric-stateless,Azure,Azure Service Fabric,Service Fabric Stateless,我们的团队最近发生了一个事件,因为我们的无状态服务正在重新启动以进行azure运行时自动更新。其中一个服务在处理任务时处于强制关闭状态。这些任务可能需要长达4小时的时间 无论是通过代码还是配置,是否有一种方法可以让Azure知道我们的服务正忙,并且此时无法关闭 换句话说,我们如何让Azure知道我们的服务何时准备好进行service fabric运行时升级?首先,为什么不切换到手动升级模式 其次,对于长时间运行的作业,您仍然必须考虑到节点可能会失败,可以移动服务实例或更改角色。如果您不能很好地处
换句话说,我们如何让Azure知道我们的服务何时准备好进行service fabric运行时升级?首先,为什么不切换到手动升级模式 其次,对于长时间运行的作业,您仍然必须考虑到节点可能会失败,可以移动服务实例或更改角色。如果您不能很好地处理关机通知,所有这些类型的事件都将终止长时间运行的作业 通过使用传递给RunAsync的CancellationToken,服务结构向服务发出关闭等信号。采取了以下措施: 由于各种原因,服务结构会更改有状态服务的主结构。最常见的是集群重新平衡和应用程序升级。在这些操作期间(以及在正常服务关闭期间,如您看到服务是否被删除),服务尊重CancellationToken非常重要 不干净地处理取消的服务可能会遇到几个问题。这些操作很慢,因为服务结构等待服务正常停止 关于RunAsync方法,也有同样的说法,但略为简短: 确保传递给RunAsync(cancellationToken)的cancellationToken得到尊重,一旦发出信号,RunAsync(cancellationToken)将尽快正常退出 在您的情况下,您应该对被取消的CancellationToken执行操作。您应该以某种方式存储当前作业的状态,以便在下次调用RunAsync时恢复它 如果真的是一个长时间运行的工作,无论如何都不能中断和恢复,那么你应该考虑在可靠的服务之外完成这项工作,比如网络工作或其他事情。或者接受一些工作可能会丢失的事实 换句话说,您不能告诉ServiceFabric等待关闭您的服务。这也会破坏集群的平衡和可靠性。 耐久性层权限允许服务结构暂停任何VM级基础结构请求(例如VM重新启动、VM重新映像或VM迁移) 青铜-没有特权。这是默认设置。 Silver-每个UD可以暂停基础结构作业10分钟。 黄金-每个UD的基础设施作业可以暂停2小时。黄金耐久性只能在全节点VM SKU(如D15_V2、G5等)上启用
我在发布之前仔细阅读了这些文档-细节我还不清楚。你能停多久?暂停/取消暂停的机制是什么?您的解释涉及有状态服务(?)。无状态服务呢?另外,如果您的长时间运行请求位于asp.net控制器方法中,我不确定CancellationToken有何帮助。有没有关于如何实现这一点的示例?我可以想象SF有一种方法,比如健康检查,来验证“耗尽”的服务实例是否仍然繁忙(处理长时间运行的请求)或者是否可以停止。有什么建议吗?有什么提示吗?我相信所有的升级文档都没有涵盖这个主题。