什么是灰度发布
什么是灰度发布
灰度发布似乎是介于发布和不发布中间的一个地带。而且常见于互联网公司。为了不影响用户的使用,不中断服务进行升级。
尤其是体量巨大的互联网公司几乎没有哪家会发布公告,停机更新。
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
对于app来说,可以通过对用户行为的推断,例如每次更新版本就会有一批用户热衷于尝鲜,也有一部分用户,基本从不更新。在这批用户使用过程中,根据他们的意见改进,同时也可以测试生产环境下新的系统,算法等健壮性,稳定性。为真正发布版本提供宝贵的反馈。
对于一个后台服务的升级,通常企业级都需要集群来提供服务,通过调节负载均衡的权重,让新的代码暂时只处理少部分的业务,根据生产环境下的日志信息等,修改bug,优化性能。逐渐完善,同时逐渐增加新服务的权重,平稳的过渡到新系统上。
系统的升级总是伴随着风险,无论测试过几遍,总是不可能完全覆盖生产环境上的极端情况。
传统的升级,被称为系统的切割,老系统退役,新系统上线。一旦出现问题,回退非常的棘手。但是灰度发布可以灵活的处理这些问题,把不可控因素一点点暴露,不会导致灾难性的服务停止。
微信前不久推出了实验室这个功能,里面包括了搜一搜,看一看等。
其实这个先进的想法来自于google lab。google lab可以让用户自己选择是否尝试新的特性,并且可以随时关闭,可以说是非常的人性化,也可以看到国内企业在吸收国际公司的有点。
参考文章都非常的不错,分享给大家,有兴趣的可以看一看。
关于灰度发布的实现方法,架构逻辑等等,不要觉得自己离这些很遥远,做一个视野广阔的程序员。
参考文章
http://blog.csdn.net/hys19920320/article/details/50899932
http://blog.csdn.net/aresiii/article/details/49125369
http://www.jianshu.com/p/eeceac29f390