Skip to content

如何自定义实现基于域名前缀的蓝绿灰度发布

Neptune edited this page Oct 18, 2022 · 10 revisions

实现基于域名前缀的蓝绿灰度发布的功能,需要继承RouteFilter

例如,有两个域名,a.nepxion.com,b.nexion.com,调用第一个域名时候,走蓝路由,调用第二个域名时候,走绿路由

下面代码既适用于Zuul和Spring Cloud Gateway网关,也适用于微服务。继承DefaultGatewayStrategyRouteFilter、DefaultZuulStrategyRouteFilter和DefaultServiceStrategyRouteFilter,覆盖掉目标方法,通过@Bean方式覆盖框架内置的过滤类

public class MyGatewayStrategyRouteFilter extends DefaultGatewayStrategyRouteFilter {
    @Autowired
    private GatewayStrategyContextHolder gatewayStrategyContextHolder;

    // 把域名前缀转化成蓝绿灰度条件表达式中的驱动参数
    @Override
    public Map<String, String> getExternalHeaderMap() {
        String host = gatewayStrategyContextHolder.getURI().getHost();
        String domain = host.substring(0, host.indexOf("."));
        
        Map<String, String> externalHeaderMap = new HashMap<String, String>();
        externalHeaderMap.put("domain", domain);
        
        return externalHeaderMap;
    }
}

在配置类里@Bean方式进行过滤类创建,覆盖框架内置的过滤类

@Bean
public GatewayStrategyRouteFilter gatewayStrategyRouteFilter() {
    return new MyGatewayStrategyRouteFilter();
}




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally