什么是灰度发布?

196 阅读2分钟

互联网公司的产品有一个特点,就是迭代非常快,很多公司会采用一周发布一个版本的迭代模式。在这种高频率的迭代模式下,往往会伴随着一些风险,比如:

  • 新发布的代码出现兼容性问题
  • 新的功能发布后,用户是否能够接受,如果不能,会造成用户流失
  • 代码中存在隐藏的Bug,导致线上故障

为了规避这些问题,对于较大的功能性改动的版本一般都会采取灰度发布(又名金丝雀发布)的方式来实现平滑过渡。

所谓灰度发布,就是将要发布的功能先开放给一小部分用户使用,把影响范围控制在一个非常小的范围,比如A/B Test就是一种灰度发布方式,即一部分用户继续使用A功能,另外一小部分用户使用新的B功能。通过对使用B功能的用户进行满意度调查,以及对新发布的代码的性能和稳定性指标进行评测,逐步放大该新版本的投放,直到全量或者回滚该版本。

对于应用系统来说,无非是将新功能发布在特定的灰度机器上,然后根据设定的规则将部分请求路由到灰度服务器上。

网关是所有客户端请求的入口,因此在网关层可以通过灰度规则进行部分流量的路由,从而实现灰度发布。如图所示,网关对请求进行拦截之后,会根据分流引擎配置的分流规则进行请求的路由。

参考: