Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如何延迟服务结构运行时自动升级_Azure_Azure Service Fabric_Service Fabric Stateless - Fatal编程技术网

Azure 如何延迟服务结构运行时自动升级

Azure 如何延迟服务结构运行时自动升级,azure,azure-service-fabric,service-fabric-stateless,Azure,Azure Service Fabric,Service Fabric Stateless,我们的团队最近发生了一个事件,因为我们的无状态服务正在重新启动以进行azure运行时自动更新。其中一个服务在处理任务时处于强制关闭状态。这些任务可能需要长达4小时的时间 无论是通过代码还是配置,是否有一种方法可以让Azure知道我们的服务正忙,并且此时无法关闭 换句话说,我们如何让Azure知道我们的服务何时准备好进行service fabric运行时升级?首先,为什么不切换到手动升级模式 其次,对于长时间运行的作业,您仍然必须考虑到节点可能会失败,可以移动服务实例或更改角色。如果您不能很好地处

我们的团队最近发生了一个事件,因为我们的无状态服务正在重新启动以进行azure运行时自动更新。其中一个服务在处理任务时处于强制关闭状态。这些任务可能需要长达4小时的时间

无论是通过代码还是配置,是否有一种方法可以让Azure知道我们的服务正忙,并且此时无法关闭


换句话说,我们如何让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有一种方法,比如健康检查,来验证“耗尽”的服务实例是否仍然繁忙(处理长时间运行的请求)或者是否可以停止。有什么建议吗?有什么提示吗?我相信所有的升级文档都没有涵盖这个主题。