Azure服务结构 - 在不破坏架构和数据库的情况下升级无状态服务

时间:2017-03-21 21:24:31

标签: azure azure-service-fabric

我们有2个无状态服务实例访问数据库的读/写。这两项服务都位于不同的升级域中。如果我有架构更改并且一个实例在启动时升级数据库架构 - 我如何确保第二个实例不会在尚未升级的过渡期间破坏数据。

天蓝色服务架构是否提供了开箱即用的解决方案?

1 个答案:

答案 0 :(得分:1)

不,Service Fabric没有针对此方案的任何现成解决方案。将其与有状态服务的状态模式(即用于状态的类)升级的方案进行比较,一般的解决方案是尝试对模式进行仅附加的,向后兼容的更改。任何比这更复杂的更改,您需要编写一些自定义机制来处理从旧状态到新状态模式的迁移。

在使用无状态服务的情况下,如果您可以保持数据库架构更改仅附加(添加具有默认值的列等),那么我会这样做。否则,您可能需要在数据库中实现某种形式的版本跟踪。然后,您的服务实例可以检查db版本,如果它高于自己的部署版本,则从该操作退回并等待升级。