究竟什么才是灰度发布其实并没有一个严格的标准,因为这个东西不是黑的也不是白的是个中间过渡地带,这类的东西定义都会比较麻烦。由于工作的原因看到好多友商所谓的灰度发布产品,有意思的是他们实现的是完全不一样的功能,对外都说自己是灰度发布。我看到的有三种:
1、更新过程可以暂停,停在一个既有新版本又有旧版本的状态,然后选择升级或者回滚。
2、支持流量比例分配,可以把百分之几的流量分配给一个服务,剩下的给另一个服务。
3、支持 url 路径流量分配,一个路径下的流量给一个服务,另一个路径流量给另一个服务。
那究竟哪个才能算是灰度发布呢?抛开具体的技术实现,让我们从需求的角度来考虑一下为什么要有灰度发布?灰度发布究竟是要做什么?从目的出发再来看技术实现就会清晰很多。

既然要灰度就是不希望所有人都看到,就是为了控制影响范围,之所以要做这种限制就说明发布的人心里对这个发布的版本就是不确定的,害怕影响范围太大风险不可控。