
回复
第六个问题:说了这么多,具体如何实现?
网关中首先需要定义一个全局过滤器,伪代码如下:
①处的代码:从请求头中获取客户端传递过来的灰度标记(这里根据自己业务需要自行更改),判断是否是灰度发布
②处的代码:GrayRequestContextHolder则是自定义的ThreadLocal实现的线程隔离工具,用来存放灰度标记
③处的代码:将灰度标记放置在请求头中,传递给下游微服务,这里是和令牌一个逻辑。
“注意:这个全局过滤器一定要放在OAuth2.0鉴权过滤器之前,优先级要调高”
全局过滤器中已经将灰度标记打上了,放置在GrayRequestContextHolder中,下面只需要改造Ribbon的负载均衡的策略去注册中心选择灰度服务。
创建GrayRule,代码如下:
逻辑很简单,如下:
定义一个配置类,注入改造的灰度策略GrayRule,如下:
“注意:这个GrayRuleConfig不能被扫描进入IOC容器,一旦扫描进入则全局生效”
文章转自公众号:码猿技术专栏