灰度发布,对于大厂来讲是必不可少的,对于我这种历来没有灰度发布过的,并非很清楚,估计也有不少人不知道这个东西。之前只是直到灰度发布,此次稍微了解一下。html
灰度发布是指新版本或者新功能经过必定策略选取一些用户,让他们先使用,经过使用状况对功能、性能、稳定性等指标评估是否扩大范围直至全面发布。前端
灰度发布开始到结束期间的这一段时间,称为灰度期。nginx
优势:web
提早收集用户使用意见,提早优化、修复bug。框架
让用户参与产品测试,增强与用户互动,下降产品升级所影响的用户范围。性能
选取用户是很关键的一点,能够经过城市、年龄、id等一系列条件选取少部分用户,而资源则经过选取以后,判断是不是灰度用户,而后指定呈现新版本仍是旧版本。测试
web前端灰度发布若是是服务端渲染,经过服务端判断是不是灰度用户直接返回对应的版本页面。若是是经过框架,那么就须要在一个html里面判断,而后分别使用打包后的两个不一样资源。若是是原生html的项目,则所须要判断的会更多。优化
若是是客户端的灰度发布,应该是能够按照用户逐渐推送更新安装包。而服务端的灰度发布则会相应容易一些,毕竟是在后台实现。代理
如今有专门的灰度发布模式A/B测试,经过业务代码区分流量访问不一样代码。可是区分流量是业务代码作的。经过少许用户到新版本,而后对新旧版本对比,这就是A/B测试。cdn
nginx这块我不会,因此也不知道能不能实现两个分支nginx静态代理。理论上来讲是没有问题。
其实针对大型的系统,还有蓝绿部署、滚动发布等,还有专门的测试云服务提供商。
灰度发布除了代码层面以外,对服务这块要求仍是蛮大的,灰度发布不一样于预发布,灰度发布是直接让线上用户参与,而通常预发布是发布到线上,由测试人员进行测试。
固然,会使用灰度发布的,通常来讲都是千万级别用户的项目了,虽然很想使用灰度发布,但仍是须要考虑实际场景,也但愿之后能有机会使用灰度发布。