Zuul 灰度发布

1.Eureka中增加自定义的元数据,标识同组服务 不同的版本,可以yml中添加下面配置

---
spring:
  profiles: 7001

server:
  port: 7001
eureka:
  instance:
    metadata-map:
      version: v1
---
spring:
  profiles: 7002

server:
  port: 7002
eureka:
  instance:
    metadata-map:
      version: v2

2. zuul工程中引入依赖

   <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

3.新建一个GrayFilter, 这里模拟1号用户为特殊的用户,走v1服务。

@Configuration
public class GrayFilter extends ZuulFilter {

    @Override
    public String filterType() {
        return FilterConstants.ROUTE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {

        RequestContext currentContext = RequestContext.getCurrentContext();
        HttpServletRequest httpServletRequest = currentContext.getRequest();

        String userid =  httpServletRequest.getHeader("userid");
        System.out.println("userid:"+userid);

        if("1".equals(userid)){
            RibbonFilterContextHolder.getCurrentContext().add("version","v1");
        }

        return null;
    }
}

4. 使用jmeter配置,添加HTTP信息头管理

 

5. 添加Header参数

 

原文地址:https://www.cnblogs.com/datangguott/p/14310497.html