栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于springcloud eureka和zuul实现灰度发布

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于springcloud eureka和zuul实现灰度发布

1、eureka服务搭建省略

2、consume——v1服务的配置

server.port=8087
spring.application.name=consume-server
eureka.instance.hostname=${spring.cloud.client.ip-address}
eureka.client.service-url.defaultZone=http://localhost:8080/eureka

spring.main.allow-bean-definition-overriding=true

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

eureka.instance.metadata-map.version=v2

3、consume——v2服务的配置

server.port=8086
spring.application.name=consume-server
eureka.instance.hostname=${spring.cloud.client.ip-address}
eureka.client.service-url.defaultZone=http://localhost:8080/eureka

spring.main.allow-bean-definition-overriding=true

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

eureka.instance.metadata-map.version=v1

4、zuul服务
pom依赖

 
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
            2.1.6.RELEASE
        

        
            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
            2.1.6.RELEASE
        

        
            io.jmnarloch
            ribbon-discovery-filter-spring-cloud-starter
            2.1.0
        

配置

server.port=8082
spring.application.name=zuul-server
eureka.instance.hostname=${spring.cloud.client.ip-address}
eureka.client.service-url.defaultZone=http://localhost:8080/eureka

spring.main.allow-bean-definition-overriding=true

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

zuul.routes.consume.path=/consume
@Component
public class MyZuulFilter extends ZuulFilter {
    
    @Override
    public String filterType() {
        return FilterConstants.ROUTE_TYPE;
    }

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

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

    @Override
    public Object run() throws ZuulException {
        RequestContext currentContext = RequestContext.getCurrentContext();
        HttpServletRequest request = currentContext.getRequest();
        // 正常的逻辑就是先获取token,在解析token 获取用信息,查看是否已经具备了内测的资格;
        // 为了方便演示这里就写死了

        String version = request.getParameter("version");
        if("v1".equals(version)){
            RibbonFilterContextHolder.getCurrentContext().add("version","v1");
        }else if("v2".equals(version)){
            RibbonFilterContextHolder.getCurrentContext().add("version","v2");
        }else {
            RibbonFilterContextHolder.getCurrentContext().remove("version");
        }
        return null;
    }
}

5、测试

直接访问——轮询


指定版本v1访问

指定版本v2访问

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271393.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号