你能否推荐一些关于软件架构模式的文献,用于组装提供高度连续性的服务。处理软件更新/发布时。
例如,在一个企业中,多个应用程序是互连的,并且依赖于它们的资源,当然,如数据库,如何在执行更新/发布时实现零停机?典型的方案包括一次更改数据库设计和多个服务合同。
答案 0 :(得分:1)
无状态可能是构建服务层的最重要因素,可以在零停机时升级。这允许您启动软件的新版本,执行负载平衡器切换,以及关闭旧版本。
这可以通过有状态系统实现,但您必须能够监视现有连接,并在等待现有会话到期时更加小心地控制负载均衡器。
数据库设计更改要复杂得多,通常只涉及规划,以便更改始终向后兼容。您需要确保数据库允许同时运行旧版本和新版本的服务。
这并不意味着你无法做出突破性改变,这只是意味着你通常需要分两步完成。例如,重命名字段变为:
这是一个巨大的痛苦,但对于某些系统,您确实需要这种正常运行时间要求。当需要很长时间(有时是几周)将数据移动到新位置时,我也必须这样做。
最后,这一部分非常重要。确保您的服务是自主的。没有多个服务读/写到同一个表。这是一个巨大的混乱,同时迁移多个服务是一场噩梦。