Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 service fabric 服务结构何时重新启动/清除状态_Azure Service Fabric - Fatal编程技术网

Azure service fabric 服务结构何时重新启动/清除状态

Azure service fabric 服务结构何时重新启动/清除状态,azure-service-fabric,Azure Service Fabric,我一直在阅读服务结构,但我还没有弄清楚有状态服务的状态何时初始化 如果我在本地开发,我假设每次运行应用程序时状态都是“重新启动”。(即按F5进行调试)。如果我将这些服务部署到Azure,我会想象这些服务将启动,下次部署时,它将被视为升级。这意味着服务在升级期间保持其状态。 我可能错了,如果服务或参与者对存储的状态进行了更改,状态会发生什么变化 或者我错了,需要将状态保存在某种外部存储中,以确保用户数据不会丢失。ie使服务和参与者维护数据的热拷贝,并在需要时将其持久化,以防整个系统重新启动或重新部

我一直在阅读服务结构,但我还没有弄清楚有状态服务的状态何时初始化

如果我在本地开发,我假设每次运行应用程序时状态都是“重新启动”。(即按F5进行调试)。如果我将这些服务部署到Azure,我会想象这些服务将启动,下次部署时,它将被视为升级。这意味着服务在升级期间保持其状态。 我可能错了,如果服务或参与者对存储的状态进行了更改,状态会发生什么变化


或者我错了,需要将状态保存在某种外部存储中,以确保用户数据不会丢失。ie使服务和参与者维护数据的热拷贝,并在需要时将其持久化,以防整个系统重新启动或重新部署

默认情况下,该状态对于磁盘是持久的(除了复制到3个节点之外),因此它应该在重新启动后仍然有效

在Visual Studio中按F5时,默认行为是删除旧应用程序并将当前版本作为新应用程序部署。要维护开发集群上的状态,可以勾选项目属性中的复选框以进行升级,而不是干净的部署

部署到Azure时,您有相同的选项-部署新应用(并失去状态)或部署升级以保持状态。state类的新旧版本应该是兼容的,它们基于
DataContract
,使之更容易


当然,使用外部状态存储的场景也是可能的。

注意:如果您在Azure中使用VM规模集,如果您拆除规模集,则其磁盘将消失,存储在其中的任何状态都将丢失。因此,您仍然应该在备份/恢复方面实施良好的程序;但实际上,我认为情况并非如此升级似乎通常保持状态——但有时一两个参与者仍然会无缘无故地忘记一切;例如,重新启动我的机器会导致所有参与者的所有状态都丢失。-这真是一组令人失望的缺陷。你是如何处理需要新版本号进行升级的问题的?我希望我的状态在部署期间保持不变,但不希望每次点击run时都手动设置新的版本号。