6.7.0(MAR 1, 2021)
发布日志
发布策略
提醒:版本号右边,
↑
表示>=该版本号, ↓
表示<=该版本号
表示维护中 |
表示不维护,但可用,强烈建议升级 |
表示不维护,不可用,已废弃
- 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
获取最新版本