NOTE

1.13 分布式系统升级回滚

1. 什么是服务升级回滚 - 分布式系统一个服务有多个实例,新功能发布或者旧系统重构时需要对这些实例都进行升级替换,如果出现问题了那么得及时回滚 2. 部署策略 2.1. 停机部署 - 把现有版本的服务停机,然后部署新的版本 - 优点:在部署过程中不会出现新老版本同时在线的情况,保证一致性 - 缺点

分布式系统创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是服务升级回滚

  • 分布式系统一个服务有多个实例,新功能发布或者旧系统重构时需要对这些实例都进行升级替换,如果出现问题了那么得及时回滚

2. 部署策略

2.1. 停机部署

  • 把现有版本的服务停机,然后部署新的版本
  • 优点:在部署过程中不会出现新老版本同时在线的情况,保证一致性
  • 缺点:需要停机,对用户影响大

2.2. 蓝绿部署

  • 搞两套环境,流量达到A环境,把新版本发布到B环境后,把流量切到B环境
  • 优点:不用停机,也不会有新老版本同时在线的一致性问题
  • 缺点:需要两套环境,浪费资源;对于有状态的服务不太友好

2.3. 滚动部署

  • 逐个替换应用的所有实例,来缓慢发布应用的一个新版本
  • 优点:对于有状态的服务友好
  • 缺点:新老版本同时在线的一致性问题;没有进行验证就直接发布

2.4. 灰度部署

  • 把一部分用户切到新版上来,然后看一下有没有问题。如果没有问题就继续扩大升级,直到全部升级完成。
  • 发布流程 2. 调整机器权重为0 3. 发布 4. 调整机器权重为10 5. 登录机器查看日志 6. 确保没问题后调整机器权重为100 7. 继续其他机器
  • 回滚流程
    1. 回滚(就是使用旧包重新发布)
    2. 保留一台机器权重为0
    3. 增加Log并修改配置文件日志级别为debug
    4. 发布包到该机器
    5. 指定IP请求到该机器,登录机器查看日志

2.5. AB测试

  • 同时上线两个版本,然后做相关的比较
  • 灰度 vs AB测试
    • 灰度:是对新版本的质量没信心
    • AB测试:对新版的功能没信心

3. 回滚策略

3.1. 安装包回滚

  • 重新部署旧的安装包

3.2. 开关回滚