服务连续性的架构

时间:2015-04-30 18:03:04

标签: service architecture

你能否推荐一些关于软件架构模式的文献,用于组装提供高度连续性的服务。处理软件更新/发布时。

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

1 个答案:

答案 0 :(得分:1)

无状态可能是构建服务层的最重要因素,可以在零停机时升级。这允许您启动软件的新版本,执行负载平衡器切换,以及关闭旧版本。

这可以通过有状态系统实现,但您必须能够监视现有连接,并在等待现有会话到期时更加小心地控制负载均衡器。

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

这并不意味着你无法做出突破性改变,这只是意味着你通常需要分两步完成。例如,重命名字段变为:

  1. 添加新列
  2. 在新列中不存在数据但仅写入新列
  3. 时,部署从旧列读取的新版服务
  4. 将数据移至新列
  5. 部署仅读取/写入新列的新服务
  6. 删除旧列
  7. 这是一个巨大的痛苦,但对于某些系统,您确实需要这种正常运行时间要求。当需要很长时间(有时是几周)将数据移动到新位置时,我也必须这样做。

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