Skip to content

6.7.0(MAR 1, 2021)

Compare
Choose a tag to compare
@HaojunRen HaojunRen released this 01 Mar 03:58
· 1169 commits to 6.x.x since this release

发布日志

发布策略

提醒:版本号右边, 表示>=该版本号, 表示<=该版本号

版本 状态 SC SB SCA
7.0.0 (未发布) 202x.x.x 2.4.1 ↑ 202x.x
6.7.0 H.SR5 ↑
H
G
F
2.3.x
2.2.x
2.1.x
2.0.x
2.2.x
2.2.x
2.1.x
2.0.x
5.6.0 G 2.1.x 2.1.x
4.15.0 F 2.0.x 2.0.x
3.23.0 E 1.5.x 1.5.x
2.0.x D 1.x.x 1.5.x
1.0.x C 1.x.x 1.5.x

表示维护中 | 表示不维护,但可用,强烈建议升级 | 表示不维护,不可用,已废弃

  • 7.x.x版本(适用于202x.x.x)将继续维护
  • 6.x.x版本(同时适用于Finchley、Greenwich和Hoxton)将继续维护
  • 5.x.x版本(适用于Greenwich)已废弃
  • 4.x.x版本(适用于Finchley)已废弃
  • 3.x.x版本(适用于Edgware)不维护,但可用,强烈建议升级
  • 2.x.x版本(适用于Dalston)已废弃
  • 1.x.x版本(适用于Camden)已废弃

版本变更

  • 默认集成Spring Boot版本为2.3.9.RELEASE(可降级
  • 默认集成Spring Cloud为Hoxton.SR10(可降级),修复了安全漏洞CVE-2021-22113
  • 默认集成Apollo版本为1.8.0
  • 默认集成OpenTelemetry版本为0.17.1
  • 默认集成SkyWalking版本为8.4.0
  • 默认集成Swagger版本为1.5.21,修复1.5.20官方版本打开Swagger页面空指针异常
  • 默认集成OpenTracing Spring Jaeger版本为3.3.1
  • 默认集成Caffeine版本为2.9.0

功能迭代

  • 兼容支持Nacos Spring Boot(非Spring Cloud技术栈)
  • 增加基于WebClient的蓝绿灰度发布功能,从6.7.0开始,使用者可以通过Feign/RestTemplate/WebClient三种方式实施相应功能。由于WebClient基于Reactor,所以它的使用场景一般为Spring Cloud Gateway。特别注意:Spring Cloud 2020版的网关中不允许Feign和RestTemplate同步调用,只能使用WebClient Reactor调用方式。参考
    https://github.com/spring-cloud/spring-cloud-gateway/issues/1090

使用示例如下:

① 过滤器中执行WebClient调用

public class MyGatewayFilter implements GlobalFilter, Ordered {
    private static final Logger LOG = LoggerFactory.getLogger(MyGatewayFilter.class);

    @Autowired
    private WebClient.Builder webClient;

    @Override
    public int getOrder() {
        return 10000;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String parameter = "MyGatewayFilter";

        return webClient.build().get().uri("http://discovery-guide-service-b/rest/" + parameter).retrieve().bodyToMono(String.class).flatMap(s -> {
            // 异步线程需要复制上下文
            GatewayStrategyContext.getCurrentContext().setExchange(exchange);

            LOG.info("网关上触发WebClient调用,返回值={}", s);

            return chain.filter(exchange);
        });
    }
}

② 配置类中初始化相关Bean

// 自定义路由过滤的WebClient调用
@Bean
public GlobalFilter gatewayFilter() {
    return new MyGatewayFilter();
}

@Bean
@LoadBalanced
public WebClient.Builder webClient() {
   return WebClient.builder();
}
  • 优化OpenTracing和OpenTelemetry参数获取方式

缺陷修复

  • 增加Nacos的服务名过滤。由于Nacos注册中心会自动把服务名处理成GROUP@@SERVICE_ID的格式,导致根据服务名去获取元数据的时候会找不到,需要过滤掉GROUP前缀
    为了避免误过滤,使用者也可以关闭该开关
# 由于Nacos注册中心会自动把服务名处理成GROUP@@SERVICE_ID的格式,导致根据服务名去获取元数据的时候会找不到。通过如下开关开启是否要过滤掉GROUP前缀。缺失则默认为true
spring.application.nacos.service.id.filter.enabled=true

具体见https://github.com/alibaba/nacos/issues/4885
上述问题只会出现在“同一个服务有N个实例,一部分实例接入了Nepxion Discovery,另一部分实例未接入Nepxion Discovery”的场景中

  • 修复过滤器拦截Actuator无法执行的问题,感谢ZhangNingPegasus的PR

相关下载

DiscoveryAgent下载

访问https://github.com/Nepxion/DiscoveryAgent/releases获取最新版本

DiscoveryDesktop下载

访问https://github.com/Nepxion/DiscoveryUI/releases获取最新版本