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



我一直在阅读Service Fabric,但我还没有弄清楚的是什么时候初始化有状态服务的状态?

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

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

默认情况下,状态对磁盘持久(除了复制到 3 个节点之外(,因此它应该在重新启动后继续存在。

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

部署到 Azure 时,可以使用相同的选项 - 部署新应用(并丢失状态(或部署升级以保留状态。状态类的旧版本和新版本应该是兼容的,它们基于 DataContract 以使其更容易一些。

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

最新更新