IT老齐架构300讲笔记(035) 蓝绿、红黑、灰度发布

目录

一、蓝绿、红黑、灰度发布概念区别

1.蓝绿部署

2.红黑部署

3.灰度发布

二、灰度发布遇到的挑战1 考虑数据库变更对旧版本的兼容性影响

2.1 方案一:放弃灰度,采用红黑方式全量发布

2.2 方案二:考虑独立部署数据源进行迁移

三、灰度发布遇到的挑战2 灰度发布用户群的选择

四、灰度发布遇到的挑战3 什么时候才可以提升分配比例

专栏链接:IT老齐架构300讲笔记专栏


一、蓝绿、红黑、灰度发布概念区别

科学部署的意义

尽可能减少服务停机时间控制新版本带来的质量风险

1.蓝绿部署

2.红黑部署

蓝绿部署相比,红黑部署可以充分利用了云计算的弹性伸缩优势,从而获得了两个收益:

一是,简化了流程

二是,避免了在升级的过程中,由于只有一半的服务器提供服务,而可能导致的系统过载问题 

3.灰度发布

灰度发布,也被叫作金丝雀发布。与蓝绿部署、红黑部署不同的是,灰度发布属于增量发布方法。也就是说,服务升级的过程中,新旧版本会同时为用户提供服务

二、灰度发布遇到的挑战1 考虑数据库变更对旧版本的兼容性影响

 例如:某数据表有ab两个字段

程序猿小甲的SQL是: insert into t values(‘a’,’b’);

v1.1版本中在数据表增加了c字段,就版本运行就会报错

因此在考虑未来灰度发布的情况,要求团队成员写SQL必须明确字段

insert into t(a,b) values(‘a’,’b’);

TIPS:任何删除、更新字段信息的操作都要格外谨慎

对于新旧版本无法协同作业的情况 

2.1 方案一:放弃灰度,采用红黑方式全量发布

2.2 方案二:考虑独立部署数据源进行迁移

为新旧版本分配独立的数据源,但新旧数据源之间数据同步会更考验架构师与DBA的智慧

三、灰度发布遇到的挑战2 灰度发布用户群的选择

灰度发布用户群的选择

不能直接采用类似于Nginx的权重Weight

会导致一个用户不同请求在新旧版本间反复横跳,出现无法预期的Bug

解决方法:利用Nginx + Lua脚本化

基于IP或者UA等用户稳定特性然后Hash取模来决定访问新旧版本

Hash(192.168.31.102) % 10 = 7 #送给旧版本

Hash(192.168.31.108) % 10 = 9 #送给新版本

四、灰度发布遇到的挑战3 什么时候才可以提升分配比例

在发布过程中,我们应该注意监测用户请求失败率用户请求处理时长和异常出现数量这几个信息,以保证快速发现问题并及时回滚

在灰度发布的时候,可以部署相对较小的集群让集群保持在高压力确认新版应用的性能情况,之后再酌情进行扩容。

TIPS:推荐了解下SkyWalking,国产开源监控系统,简单粗暴

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值