什么是灰度发布
有的用户,收到过某宝新版内测邀请的通知,就是让你体验某宝的新版测试。那等你下载完新版本的某宝APP后,打开它使用的时候后端服务器又会发生什么呢?
1.将你的新版本号在每个请求中带给负载均衡服务器,或者网关服务器;
2.负载均衡服务器或者网关服务器根据你的这个版本号做负载均衡和路由转发,找到发布了新服务的服务器进行调用。
概括一下就是:所谓灰度发布,就是根据用户、版本、所处的地理位置、是否VIP等一系列的加持属性,服务器对客户端的请求执行不同的路由转发规则。所以其核心还是请求转发。
怎么实现?
搞清楚灰度发布的本质是请求转发,那么我们就很好实现了。说到请求转发,我们可能有很多种方案:
1)Nginx的upstream;2)SpringCloud的zuul;3)Dubbo的SPI;4)Redis做转发过滤;5)Zookeeper的临时节点;6)Cookie辅助等等。
甚至,我们还可以把用户、版本、所处的地理位置、是否VIP等一系列的加持属性和需要转发的uri存到数据库里,然后做自定义的请求转发。
但是这些的本质还是请求转发,即可以根据一个简单的数据,对应到一个uri的字符串,并且这个uri对应的服务活的,可用的。
完善的出发点
完善需要考虑些什么问题呢?
1)如何维护请求转发关系的问题
2)高可用的问题
3)uri的重复性问题
4)对匹配规则的更高级的支持问题,比如正则表达式的支持
5)失效的问题