全链路灰度发布实现

必须解决的场景问题

背景:
1、放问itgod.org域名时,走正常线上版本提供服务  
2、当User-Agnet中包含ToGray时,走灰度版本系统服务  
3、假设有4个服务分别为A/B/C/D,正常调用关系是A->B->C->D  
4、应用B推出了B2版本,应用D推出了D2版本,需要进行灰度发布,并进行测试  
问题1: 流量标识怎么透传
用户请求中带了User-Agent: ToGray,并成功抵达了A服务,A服务在调用B服务时,B服务此时有B和B2两个版本,
应该将来自A的请求转发到B还是B2? 

img_5.png

问题2: 识别了流量标识怎么路由
1、流量中包含测试流量的特殊标识,但是下一个目标应用并没有灰度环境时如何路由?比如A->B时,带上了特殊流量标识,而B没有B2版本,怎么定向到B版本
2、应用之间的调用是通过域名的方式调用,在调用域名时,可能会进行URI rewrite等处理,而不是直接调用另外一个服务,如何控制路由?

img.png

问题3: 怎么闭环
当所有流量都已经转发到灰度版本后,此时称为灰度完成。那么灰度版本替代了原来的正常版本,下次还要继续发布灰度版本时怎么办?  
问题4: 怎么自动化
整个过程包含一下4个大阶段, 整个过程复杂,且人工干预场景较多,如何自动化灰度流量?
灰度环境准备: 准备应用的灰度版本,无流量路由进入  
灰度测试流量: 一般根据设置固定的Header或则URI参数来路由  
灰度用户级流量: 根据用户属性或随机 进行百分比流量操控自动化  
灰度完成:  灰度版本彻底变更为线上版本,回收老版本,将此版本做为下一次灰度的老版本使用  
问题5: 怎么为更复杂的多版本定制流控
如何支持更多的灰度版本?比如在灰度测试流量时,B服务同时有B2和B3多个版本

img_1.png

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-09-19 10:45:38

results matching ""

    No results matching ""