分布式系统升级所遇到的问题
浏览:1221次 出处信息
常规的单机软件升级, 一般认为是一个原子操作, 也就是说, 软件会在"瞬间"完成升级, 即使不能在"瞬间"完成升级, 也要中断服务, 等升级完成后再提供服务.
对于需要中断服务的情况, 在分布式系统中是不能接受的. 同时, 分布式系统的升级永远不可能在"瞬间"完成. 因此, 分布式系统升级会面临一个长时间的中间态, 新旧版本的软件同时运行, 这就涉及到兼容性问题.
假如, 新版本的软件的数据格式改变了, 那么, 新版本写入的数据就无法被旧版本识别, 旧版本就会报错. 因为, 新版本的软件很容易做到向后兼容(新的兼容旧的), 但是, 向前兼容(旧的兼容新的)依赖预见性, 不可能预见全部未来.
如果分布式系统无法做到向前兼容, 这时候, 应该怎么办呢? 难道要停服升级?
一个常用的解决方案是在旧版本和新版本之间插入一个中间版本. 这个中间版本的主要特点是不写入新格式的数据, 但能识别新格式的数据.
我们先逐步把旧版本替换为中间版本, 在这个过程中, 因为没有新格式的数据产生, 所以没有兼容问题. 等旧版本全部替换完毕后, 逐步升级为新版本, 在这个过程中, 虽然新旧格式的数据都有, 但新版本都能识别, 也没有兼容问题
建议继续学习:
- PHP将死,何以为继? (阅读:4801)
- 记一下我的ubuntu升级到10.04时遇到都问题 (阅读:3686)
- Mysql 4.1升级到5.0以后一个很郁闷的地方 (阅读:2460)
- APP升级习惯调查 (阅读:2399)
- 升级squid 2.6 到2.7 的冤枉路 (阅读:2303)
- 单机上安装和升级Oracle 11g (阅读:2124)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:可靠通信的三条基本定理
后一篇:没有更老的了!,您可返回本栏目:系统架构 >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 升级
- 发布时间:2021-06-13 22:41:22
建议继续学习
近3天十大热文
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成