灰度发布(金丝雀部署其实也差不多),其主要功能点是流量的分流,通过流量的分流达到灰度的调用和响应。那么流量的分流就会两种调用情况,一种是南北向的,一种是东西向的。
1、南北向的好说,无论是通过k8s的Ingress还是通过自建的API网关,都可以在网关处,很容易的做到,只需要把流量引导到不同版本上就ok了。
2、东西向的,这可能是微服务不得不考虑的,核心技术在SpringCloud中,原生的SpringCloud是没有服务路由的功能的,所以一定是借助于我们对SpringCloud中ribbon的改造,实现服务路由,进而实现微服务间的灰度。(因为东西向的服务间的通信,跟k8s没有太大关系了)
说到微服务的灰度,还不得不提一个全链路的灰度发布,一条链路中6个服务,其中三个是有灰度版本的,这样的场景怎么做?这也是我们在做微服务治理产品的时候遇到的问题,目前我们的方案是通过报头路由、报头传递的方式解决。