回滚机制
回滚是指当程序/数据出错时,将数据和程序恢复到最近的一个正确版本的行为。
常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。
7.1 事务回滚
单库的回滚比较简单,分布式数据库,回滚则要使用分布式事务,见分布式事务笔记。底层实现如2PC,3PC长时间阻塞会影响性能。不需要保证强一致性,则使用本地消息表、事务消息、TCC模式、Sagas模式等实现最终一致性。
7.2 代码库回滚
7.3 部署版本回滚
部署版本化:避免只发布修改的类和文件,应该全量发布。保留上次发布的版本,方便直接回滚
小版本增量发布:小版本指修复BUG或者小功能,增量发布指先发布1台验证,然后增量发布直至全部发布
大版本灰度发布:在一个集群中同时部署两套新旧版本,并行跑一段时间,将流量分发到新旧系统(通过带版本号的URL等),如果验证成功则全部切换到新版本
架构升级并发布:新老版本部署不同集群
7.4 数据版本回滚
对业务数据中的商品/价格数据,需要进行版本化处理。
7.5 静态资源版本回滚
1. 发布新的静态资源到源服务器
2. 清理CDN缓存,从而可以回源服务器获取最新的静态资源
3. 在新的URL上添加随机数并清理浏览器缓存
人生就像蒲公英,看似自由,其实身不由己。