灰度发布入门

阅读: 评论:0

灰度发布入门

灰度发布入门

为什么需要灰度发布?

我们的产品是个比较典型的互联网产品,产品升级采用“小步快跑”的方式,一般采用保持每周或每两周一次的发布频率,同时,每周会有数次bug上线。系统上线总是伴随着风险,系统重大bug的风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险等等,因为这些风险的存在,很多次上线都是通宵达旦、小心翼翼,RD和QA都搞提很疲惫。为了不再如此疲惫,同时避免重大事故的发生,我们决定采用灰度发布的策略,其主要思想就是化大为小,逐渐发布,将风险引起的影响控制在最小范围。

如何进行灰度发布?

1, 首先,我们将系统分成两个集群,集群A和集群B,每个集群有一个nginx,在两个集群之上,有一个大的集群C,也有一个nginx。
2, 在发布时,挑选在线用户比较小的时间点(如深夜),将小的集群B下线
3, 将在PL环境测试通过的程序包部署到下线的小集群B,使用独立的账套在线进行关键流程的测试(以避免污染真实用户的线上数据)。
4, 小集群测试通过之后,将小集群B上线,即,将小集群的nginx挂到大集群C的nginx下,上线试运行。
5-1,如果新上线的小集群B运行稳定,则将新程序包发到集群A,从而完成整个集群的发布。
5-2,如果新上线的小集群B有重大bug,则进行回滚。

以上步骤看起来很简单,但在实际落地过程中需要注意以下问题:
1,集群A与B在应用层完全隔离,dubbo注册中心zk与mq是非共享的,但在数据层是共享的。即db,redis,mongodb,redis这些资源是由集群A&B共享的。因此,数据的schema对于新旧版本需要兼容。
2,以上方案中,新旧版本是并行的,用户请求被随机分配到新旧版本的两个集群中。如果需要限定只有特定的用户才可以访问新系统(一般是铁粉用户),则需要增加路由规则。
对于简单的路由规则,可以通过nginx+lua脚本的方式实现, 可参考:

对于复杂路由规则相关的方案请参考:

本文发布于:2024-02-04 21:15:50,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170716587359677.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:灰度   入门
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23