保留和迁移演员/服务状态

时间:2017-05-19 01:47:14

标签: azure-service-fabric

我一直在考虑使用服务架构作为我们正在构建的新解决方案的平台,而我正忙于数据/舞台管理。我非常喜欢可靠服务和演员模型的概念,因为我们已经开始将一些似乎运作良好的东西原型化。

随着众生的说法,我开始对国家管理感到困惑,以及如何在一个真正的“真实”中使用它。项目。我也有点担心数据如何像一个黑盒子,我可以在需要时直接询问或操纵。我想过的几个场景是:

  1. 我如何在项目中的两个开发人员之间共享状态?我有一个演员,只要我调试演员,我的状态就会得到维护,复制等等。但是当我把它关闭时,状态就全丢了。更重要的是,我的团队中的其他人需要设置与我相同的数据,这对于交易数据来说很好 - 但是某些主人'数据应该是不变的。

  2. 同样,我很好奇我将如何在环境之间迁移数据更改。我们定期从我们的SQL Azure实例中提取生产数据,以保持我们的测试环境新鲜,我们还会根据发布的要求不断推动更改。

  3. 我已经查看了备份和还原过程,但感觉很麻烦,尤其是在开发方案中。要求某人(或编写脚本)恢复每个有状态服务的每个分区似乎都是相当多的工作。

    我认为这两个问题的答案是我可以使用有状态服务,但我需要依赖外部数据存储来处理我想要保留的任何内容。该服务将在激活时检查状态,并将状态服务几乎用作直写缓存。我并不是说这需要一个统一的设计选择,更多的是基于服务的服务 - 取决于服务需求。

    这听起来是对的,我是否过度思考,遗漏了什么等等?

    由于

1 个答案:

答案 0 :(得分:1)

  1. 如果要在开发人员之间共享Actor状态,则可以使用共享群集。 (在Azure或本地)。确保你总是进行upgrade-style部署,这样状态才能生存。如果你configure这样做,状态就会持续存在。

  2. 您可以通过执行服务的所有副本的backup来迁移数据,并将其还原到其他群集上。 (让服务运行并触发数据丢失)。这很麻烦,但此时它是唯一的方法。 (或在外部存储状态)

  3. 请注意,群集中的状态是安全的,它存储在磁盘上并进行复制。如果您定期进行状态备份并将其保留在群集之外,则无需拥有外部存储。有状态服务不仅仅是缓存。

相关问题