2017-02-23 22 views
1

我想重命名一个actor服务并重新部署并将数据迁移到“新”(已重命名)actor。在服务结构中重构服务而不丢失数据的正确方法

当我只重命名演员和部署,它会导致这个错误:

Services must be explicitly deleted before removing their Service Types

,因为清单中的名称更改这是合理的。

但是,重命名演员并保存数据的推荐/最简单的方法是什么?

我可以尝试备份和恢复新角色中的数据。但这不符合CICD的工作方式。

找到一个相关的问题:Service Fabric: removed actors and now upgrade fails但似乎有很多涉及手动操作。

回答

1

我会尝试部署版本,其中:

  • 有能力扩大现有的演员来阅读他们的状态
  • 创建新的角色 - 在需要的时候 - 通过读取现有的参与者的状态,然后删除读取现有的演员(你真的不需要它的权利?)

如果你不deleteOnConverted,你加倍所需的存储空间,进行转换。

最后部署一个版本,其中:

  • 删除未转换现有的参与者或剩余现有的参与者转换成新类型的新演员
  • - 现有/老演员状态的禁用查找(这很容易忘记)

也许你总是可以扔掉CI设置状态,而CD设置需要状态转换?

顺便说一句 - 你应该避免重命名状态,因为这是一个突破性的改变。

+0

谢谢,我很害怕这个。我也可以构建自定义的导出和导入。无论如何,这没有自动化的过程,我需要编程。在实体框架中,我使用了代码优先方法和迁移脚本。所以我可以轻松地上传或下载版本。 现在很高兴知道这一点,因为那样我将来会避免这种情况。 – Thieme