2015-04-30 94 views
0

您是否可以推荐一些关于软件体系结构模式的文献,以便在处理软件更新/版本时组合可提供高度“连续性”的服务。服务连续性体系结构

例如,在一个企业中,有多个应用程序相互连接,并且依赖于它们的资源,当然,就像数据库一样,执行更新/发布时如何实现零停机?典型场景包括一次更改DB设计和多个服务合同。

回答

1

无状态可能是构建服务层的唯一最重要的因素,可以通过零宕机进行升级。这使您可以启动新版本的软件,执行负载平衡器切换,并关闭旧版本。

这可以通过有状态系统来实现,但是您必须能够监视它们的现有连接,并在等待现有会话过期时更仔细地控制负载平衡器。

数据库设计的变化要复杂得多,通常只包含规划,以便变更始终向后兼容。您需要确保您的数据库允许同时运行旧版本和新版本的服务。

这并不意味着你不能做出突破性改变,它只是意味着你通常需要分两步进行。例如,重命名一个字段变为:

  1. 添加新列
  2. 部署服务,从旧列读取数据时没有出现在新列,但只写入新列
  3. 移动的新版本数据到新列
  4. 部署新服务,只读取/写入新列
  5. 删除旧列

这是一个巨大的疼痛,BU对于某些您确实需要的系统需要这种正常运行时间要求。当需要很长时间(有时几周)将数据移动到新位置时,我也必须这样做。

最后,这部分是非常重要的。确保你的服务是自治的。没有多个服务读取/写入同一张表。这是一个巨大的混乱,同时迁移多个服务是一场噩梦。