IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

分布式系统升级所遇到的问题

idea's blog 2021-06-13 22:41:22 累计浏览 2,828 次
本机暂存

常规的单机软件升级, 一般认为是一个原子操作, 也就是说, 软件会在"瞬间"完成升级, 即使不能在"瞬间"完成升级, 也要中断服务, 等升级完成后再提供服务.

对于需要中断服务的情况, 在分布式系统中是不能接受的. 同时, 分布式系统的升级永远不可能在"瞬间"完成. 因此, 分布式系统升级会面临一个长时间的中间态, 新旧版本的软件同时运行, 这就涉及到兼容性问题.

假如, 新版本的软件的数据格式改变了, 那么, 新版本写入的数据就无法被旧版本识别, 旧版本就会报错. 因为, 新版本的软件很容易做到向后兼容(新的兼容旧的), 但是, 向前兼容(旧的兼容新的)依赖预见性, 不可能预见全部未来.

如果分布式系统无法做到向前兼容, 这时候, 应该怎么办呢? 难道要停服升级?

一个常用的解决方案是在旧版本和新版本之间插入一个中间版本. 这个中间版本的主要特点是不写入新格式的数据, 但能识别新格式的数据.

我们先逐步把旧版本替换为中间版本, 在这个过程中, 因为没有新格式的数据产生, 所以没有兼容问题. 等旧版本全部替换完毕后, 逐步升级为新版本, 在这个过程中, 虽然新旧格式的数据都有, 但新版本都能识别, 也没有兼容问题

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Zookeeper工作原理 (累计阅读 12,202)
  2. 一致性哈希算法及其在分布式系统中的应用 (累计阅读 9,198)
  3. Storm:最火的流式处理框架 (累计阅读 7,467)
  4. 消息分发的同步均衡策略 (累计阅读 6,218)
  5. 各消息队列软件产品大比拼 (累计阅读 6,207)
  6. 如果用户在5分钟内重复上线,就给他发警告,问如何设计? (累计阅读 6,029)
  7. 解析Google集群资源管理系统Omega (累计阅读 5,998)
  8. 阿里巴巴国际站P4P引擎系统简介 (累计阅读 5,343)
  9. 分布式系统hash策略 (累计阅读 5,300)
  10. 趣图三幅:负载均衡算法需要改进 (累计阅读 5,029)