问题描述
文档中提到,在服务部署后,我们无法更改服务结构有状态服务的分区计数。如果使用命名分区,情况是否类似。我们能否在有状态服务的生命周期内向其添加或删除新的命名分区,是否有副作用?
解决方法
作为一般规则,不能在创建服务后修改分区,无论您如何处理它(例如 Int64、Named 或 Singleton)。该定义在您的 ApplicationManifest.xml 中指明,不应更改。
也就是说,如果您在最初设计解决方案时错误地估计了分区数,则没有什么特别的理由不能简单地使用新实现的分区数创建服务的 v2,并在其中引入逻辑或创建一个 (可能是单例)无状态迁移服务,将您的数据从一项服务移动到另一项服务,在您认为合适的情况下在分区之间映射数据。
迁移后,您可以在任一服务中保存状态备份(以防万一),更新解决方案中的引用以指向新服务并删除旧服务。
它不像某些提供的迁移经验那么干净,但它确实完成了工作。