Service Fabric restart/clear 什么时候状态
When does Service Fabric restart/clear state
我一直在阅读有关 Service Fabric 的资料,但我还没有弄清楚有状态服务的状态何时初始化?
如果我在本地开发,我假设每次 运行 应用程序时状态都是 "restarted"。 (即按 F5 进行调试)。如果我将服务部署到 Azure,我想这些服务将启动,下次我部署它时,它会被视为升级。这意味着服务在升级期间保持其状态。
我在那里可能是错的,因为如果服务或参与者改变了正在存储的状态,状态会发生什么?
或者我错了,需要将状态保存在某种外部存储中以确保用户数据不会丢失。即让服务和参与者维护数据的热副本,并在需要时保留它,以防整个系统重新启动或重新部署。
默认情况下,状态持久保存到磁盘(除了复制到 3 个节点),因此它应该在重启后仍然存在。
当您在 Visual Studio 中按 F5 时,默认行为是删除旧应用程序并将当前版本部署为新应用程序。要维护开发集群的状态,您可以勾选项目属性中的复选框以进行升级而不是干净部署。
部署到 Azure 时您有相同的选项 - 部署新应用程序(并丢失状态)或部署升级以保持状态。你的状态class的新旧版本应该是兼容的,它们是基于DataContract
使它更容易一些。
当然也可以有外部状态存储的场景。
我一直在阅读有关 Service Fabric 的资料,但我还没有弄清楚有状态服务的状态何时初始化?
如果我在本地开发,我假设每次 运行 应用程序时状态都是 "restarted"。 (即按 F5 进行调试)。如果我将服务部署到 Azure,我想这些服务将启动,下次我部署它时,它会被视为升级。这意味着服务在升级期间保持其状态。 我在那里可能是错的,因为如果服务或参与者改变了正在存储的状态,状态会发生什么?
或者我错了,需要将状态保存在某种外部存储中以确保用户数据不会丢失。即让服务和参与者维护数据的热副本,并在需要时保留它,以防整个系统重新启动或重新部署。
默认情况下,状态持久保存到磁盘(除了复制到 3 个节点),因此它应该在重启后仍然存在。
当您在 Visual Studio 中按 F5 时,默认行为是删除旧应用程序并将当前版本部署为新应用程序。要维护开发集群的状态,您可以勾选项目属性中的复选框以进行升级而不是干净部署。
部署到 Azure 时您有相同的选项 - 部署新应用程序(并丢失状态)或部署升级以保持状态。你的状态class的新旧版本应该是兼容的,它们是基于DataContract
使它更容易一些。
当然也可以有外部状态存储的场景。