服务面料演员状态

时间:2017-07-04 14:41:30

标签: azure azure-service-fabric service-fabric-actor

我们计划将Service Fabric actor模型用于我们的一个用户服务。我们有数千名用户,他们有自己的个人资料数据。到目前为止,服务结构演员模型通过其服务结构集群维护其状态。我无法在灾难恢复/计划关机方案/离线数据访问中获得清晰的图像。在这种情况下,是否需要将数据保留在这些actor服务的一边?

如果我们决定有一天关闭所有服务架构集群,并希望几天后重新启动,那么数据会发生什么?

2 个答案:

答案 0 :(得分:4)

在Azure中的SF群集中,数据存储在临时驱动器上。没有guarantee关闭的节点会保留临时驱动器。因此,同时关闭所有节点将导致数据丢失。

为避免这种情况,您应定期创建(Actor)服务的备份。例如,使用this Nuget包。将生成的文件存储在群集之外。

群集技术有助于在节点故障期间保护数据安全,例如:在5节点集群中,剩余4个健康节点可以接管故障节点的工作。数据以冗余方式存储,因此您的服务仍然可以运行。相同的功能还允许滚动升级服务/演员。

Here's一篇关于DR的文章。

答案 1 :(得分:0)

我使用actor模型在服务结构中实现了一个大型企业应用程序来管理订单。 在选择数据备份和恢复策略时,几乎没有什么可以帮助

  1. 由于包https://github.com/loekd/ServiceFabric.BackupRestore未完全成熟,您需要处理一些方案。 例如:在部署期间,您的actor分区移动到其他节点,如果您尝试进行增量备份,它将因FabricMissingFullBackupException而失败,因为在成为主节点后该节点上您没有进行完全备份,而有些需要手动修复问题。 我们如何添加重试模式来解决该问题不在本问题的范围内。
  2. 在恢复过程中,增量备份始终无法恢复。
  3. 有时,即使正确设置了logTrunctationIntervalInMinutes,增量备份创建也会失败。
  4. 某些开发人员错误地删除了您将丢失所有数据的服务或应用程序。
  5. 如果你的系统严重依赖Reminder,那就是我们的情况。 在恢复期间,所有提醒都会重置。
  6. 良好的解决方案:使用您自己的实现覆盖默认的KvsActorStateProvider,如果您想将功能BI用于某些分析,则将数据存储在DocumentDB,MongoDB,Cassandra或Azure SQL中。