Service Fabric何时重新启动/清除状态

Ste*_*ice 4 azure-service-fabric

我一直在阅读Service Fabric,但尚未解决的事情是何时初始化有状态服务的状态?

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

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

Mik*_*kov 5

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

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

部署到Azure时,您有相同的选择-部署新应用(丢失状态)或部署升级以保持状态。状态类的新旧版本应该兼容,它们的基础DataContract是使其变得更加容易。

当然,具有外部状态存储的方案也是可能的。