Skip to content

Releases: Nepxion/Discovery

6.8.0(APR 1, 2021)

01 Apr 04:47
Compare
Choose a tag to compare

发布日志

发布策略

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

版本 状态 SC SB SCA
7.0.0 (商业版) 202x.x.x 2.4.1 ↑ 202x.x
6.8.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.24.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)已废弃

版本变更

  • 默认集成OpenTelemetry版本为1.0.1
  • 默认集成Guava版本为30.1.1-jre

功能迭代

缺陷修复

  • 修复网关上侦测丢失TraceId的Bug
  • 修复Hystrix使用线程隔离模式时,自定义并发策略冲突问题。感谢@yanbw的PR
  • 修复@InitBinder注解带来的重复埋点输出的Bug

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.24.0(APR 1, 2021)

01 Apr 04:46
Compare
Choose a tag to compare

见 Nepxion Discovery 6.8.0 发布

6.7.0(MAR 1, 2021)

01 Mar 03:58
Compare
Choose a tag to compare

发布日志

发布策略

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

版本 状态 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获取最新版本

3.23.0(MAR 1, 2021)

01 Mar 03:57
Compare
Choose a tag to compare

见 Nepxion Discovery 6.7.0 发布

6.6.0(FEB 1, 2021)

01 Feb 04:04
Compare
Choose a tag to compare

感谢贡献者

  • 感谢@CongweiXu贡献的基于Etcd和Consul配置中心的模块

发布日志

发布策略

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

版本 状态 SC SB SCA
7.0.0 (未发布) 202x.x.x 2.4.1 ↑ N/A
6.6.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.22.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.8.RELEASE(可降级
  • 默认集成Spring Cloud Alibaba为2.2.5.RELEASE(可降级
  • 默认集成OpenTelemetry版本为0.15.0
  • 默认集成Consul版本为1.4.5
  • 默认集成JEtcd版本为0.5.4

功能迭代

适配新版Nacos

  • 升级到Nacos 1.4.1,修复安全问题
  • 增加Nacos新的配置参数
  • 重构Nacos配置获取方式,静态变量引入更改为动态Properties引入

增加配置中心

  • 增加基于Etcd配置中心
  • 增加基于Consul配置中心

增加网关侧直接进行Feign或者RestTemplate调用场景中蓝绿灰度

  • 重构Feign和RestTemplate拦截器,从discovery-plugin-strategy-starter-service模块移到discovery-plugin-strategy-starter模块
  • StrategyContextHolder增加如下方法,网关层和服务层实现该方法
Enumeration<String> getHeaderNames();
  • 通过如下开关进行控制
# 启动和关闭路由策略的时候,对REST方式的调用拦截。缺失则默认为true
spring.application.strategy.rest.intercept.enabled=true

增强服务侧前置过滤

  • 增加服务侧根据URI决策过滤排除

默认为/actuator/,表示Actuator调用不需要执行蓝绿灰度。用户一般不需要配置该项

# 路由策略的时候,执行请求过滤,对指定包含的URI字段进行排除。缺失则默认为/actuator/,如果多个用“;”分隔,不允许出现空格
# spring.application.strategy.uri.filter.exclusion=/actuator/

架构优化

优化Commons模块

  • 简化Commons子模块的包依赖引入

优化和兼容规则策略格式

  • 为准确体现相关变量支持Header、Parameter、Cookie中的任意一个,在6.6.0版本之前,表达式格式为 header="#H['a'] == '1'" ,从6.6.0版本开始,表达式格式改为 expression="#H['a'] == '1'" ,但也兼容 header="#H['a'] == '1'" ,即从6.6.0版本开始,用 expression=""header="" 都支持

优化和兼容元数据

  • 为保持和Spring Cloud 2020兼容,内置元数据Key用“_”代替“.”,相关静态变量从DiscoveryConstant迁移到DiscoveryMetaDataConstant
  • DiscoveryAgent默认内置thread.mdc.enabled为true,使用者不再需要在DiscoveryAgent启动参数上输入-Dthread.mdc.enabled=true这个参数

优化Header取值方式

  • 异步调用下,进行Wrapper的时候,Tomcat会把所有大写的Header改成小写,Undertower不执行这个逻辑,那么Wrapper的时候统一用LinkedCaseInsensitiveMap来缓存Header,实现对大小写不敏感的逻辑

优化注入方式

  • 优化ZoneAvoidanceRuleDecorator类中的注入方式

优化结构

  • 优化某些类名和方法名
  • 优化抽象某些类的@bean方式
  • 优化类中配置方式
  • 优化相关拦截器获取Header方式
  • 优化@ConditionalOnClass使用方式
  • 删除没有用到且不够优雅的Servlet和Reactive容器判断的方法逻辑,使用者可以通过WebApplicationType获取到容器类型

缺陷修复

  • 修复强绑定配置中心的缺陷
  • 修复潜在可能性的空指针异常

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.22.0(FEB 1, 2021)

01 Feb 04:02
Compare
Choose a tag to compare

见 Nepxion Discovery 6.6.0 发布

6.5.0(JAN 1, 2021)

01 Jan 04:03
Compare
Choose a tag to compare

感谢贡献者

  • 感谢@rottenmu贡献的开发基于Zookeeper配置中心的模块,以及对本框架的功能测试
  • 感谢@zifeihan贡献的DiscoveryAgent双重异步ThreadLocal不丢失的PR
  • 感谢@fengfeng Li贡献的非Http请求触发下灰度蓝绿发布的PR
  • 感谢@henryxl开发的在线指南Wiki网站框架
  • 感谢@carl.zhao撰写的框架架构和源码分析的系列文档

发布日志

发布策略

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

版本 状态 SC SB SCA
7.0.0 (未发布) 202x.x.x 2.4.1 ↑ N/A
6.5.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.21.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.7.RELEASE(可降级
  • 默认集成Spring Boot Admin版本为2.3.1(可降级
  • 默认集成Spring Cloud版本为Hoxton.SR9(可降级
  • 默认集成SkyWalking版本为8.3.0
  • 默认集成OpenTelemetry版本为0.13.1
  • 默认集成Guava版本为30.1-jre
  • 默认集成Caffeine版本为2.8.8
  • 默认集成Dom4J版本为2.1.3,修复了安全漏洞CVE-2018-1000632CVE-2020-10683

工程变更

  • 独立抽象discovery-plugin-framework-starter-parser模块,供第三方二次开发
  • 独立抽象discovery-console-desktop模块,合并到DiscoveryUI工程下,提供更强大的全链路蓝绿灰度编排和流量侦测界面

① 全链路蓝绿发布

② 全链路蓝绿发布下的流量侦测

③ 全链路灰度发布

④ 全链路灰度发布下的流量侦测

⑤ 全链路前段蓝绿发布+后段灰度发布混合模式下的流量侦测

⑥ 全链路前段灰度发布+后段蓝绿发布混合模式下的流量侦测

⑦ 基于Header[n-d-version]驱动的蓝绿发布,不需要配置规则策略

  • 增加discovery-plugin-strategy-starter-opentelemetry模块
  • 增加discovery-plugin-strategy-starter-sentinel-opentelemetry模块

功能迭代

增强和优化服务侧蓝绿发布和灰度发布的实现逻辑

Spring Cloud Gateway网关、Zuul网关、业务服务,这三者任意一处都可以实现蓝绿发布和灰度发布,并且逻辑和用法完全一致,得到了辩证统一

Spring Cloud Gateway网关、Zuul网关、业务服务,这三者都可以通过开关来控制,以上游策略为优先,还是以本端策略为优先

  • 服务侧引入Spring OncePerRequestFilter机制,实现前置过滤器
  • 服务侧增加开关,控制如下逻辑,使用方式和网关侧相同。其意义是,当网关和服务同时在执行灰度蓝绿并有可能策略产生冲突的时候,使用者可以自行决定以哪个优先
# 当外界传值Header的时候,服务也设置并传递同名的Header,需要决定哪个Header传递到后边的服务去,该开关依赖前置过滤器的开关。如果下面开关为true,以服务设置为优先,否则以外界传值为优先。缺失则默认为true
spring.application.strategy.service.header.priority=true
  • 服务侧提供跟网关一样的内置Header的方式,使用者可以通过规则策略中配置内置Header

增强和优化复合式蓝绿发布和灰度发布的支持

① 基于网关 -> 服务A -> 服务B的链路

  • 支持在网关上执行对服务A的蓝绿发布,在服务A执行对服务B的灰度发布
  • 支持在网关上执行对服务A的灰度发布,在服务A执行对服务B的蓝绿发布

② 基于网关X -> 服务A -> 网关X -> 服务B的链路

  • 支持在网关X上执行对服务A的蓝绿发布,在网关X上执行对服务B的灰度发布
  • 支持在网关X上执行对服务A的灰度发布,在网关X上执行对服务B的蓝绿发布

③ 基于网关X -> 网关Y的链路

  • 支持在网关X上实现对网关Y的蓝绿发布和灰度发布

④ 基于服务 -> 网关的链路

  • 支持在服务上实现对网关的蓝绿发布和灰度发布

增加复合式全链路侦测的支持

  • 对于上述复合发布场景,支持全链路侦测
  • 对于跨网关调用,例如,网关X -> 服务A -> 服务B -> 网关Y -> 服务C -> 服务D,需要根据网关分段侦测,即网关X侦测服务A和服务B,网关Y侦测服务C和服务D
  • 增加服务类型到全链路侦测的路由信息中

增加前端实现的框架支撑

  • 提供更易用性的OpenAPI

增加规则类反解析模块

  • 增加规则类逆解析到规则文本的功能,供第三方二次开发

重构策略校验模块

  • 控制台后端增加策略校验接口
  • 策略校验核心类移到common模块下

重构配置中心模块

  • 抽象配置中心模型,为后续支持Etcd,Consul,Zookeeper等配置中心打下基础
  • 统一和优化订阅日志打印的格式

优化环境和可用区隔离和路由模块

  • 为下一个版本适配Spring Cloud 2020考虑,可用区Zone相关功能代码从discovery-plugin-framework-starter移动到discovery-plugin-strategy-starter,并在DefaultDiscoveryEnabledAdapter类里实现
  • 相关控制开关做了更改

旧开关如下

# 流量路由到指定的环境下。不允许为保留值default,缺失则默认为common
spring.application.environment.route=common

# 启动和关闭可用区亲和性,即同一个可用区的服务才能调用,同一个可用区的条件是调用端实例和提供端实例的元数据Metadata的zone配置值必须相等。缺失则默认为false
spring.application.zone.affinity.enabled=true
# 启动和关闭可用区亲和性失败后的路由,即调用端实例没有找到同一个可用区的提供端实例的时候,当开关打开,可路由到其它可用区或者不归属任何可用区,当开关关闭,则直接调用失败。缺失则默认为true
spring.application.zone.route.enabled=true

新开关如下,多了strategy

# 流量路由到指定的环境下。不允许为保留值default,缺失则默认为common
spring.application.strategy.environment.route=common

# 启动和关闭可用区亲和性,即同一个可用区的服务才能调用,同一个可用区的条件是调用端实例和提供端实例的元数据Metadata的zone配置值必须相等。缺失则默认为false
spring.application.strategy.zone.affinity.enabled=true
# 启动和关闭可用区亲和性失败后的路由,即调用端实例没有找到同一个可用区的提供端实例的时候,当开关打开,可路由到其它可用区或者不归属任何可用区,当开关关闭,则直接调用失败。缺失则默认为true
spring.application.strategy.zone.route.enabled=true

优化组隔离模块

  • 为下一个版本适配Spring Cloud 2020考虑,基于组消费端隔离相关功能代码从ConsumerIsolationLoadBalanceStrategy移动到DefaultDiscoveryEnabledAdapter类里实现
  • 基于组服务注册隔离准入相关功能,使用场景很狭窄,故去除。相关控制开关也去除
# 启动和关闭注册的服务隔离(基于Group黑/白名单的策略)。缺失则默认为false
spring.application.strategy.register.isolation.enabled=true
spring.application.strategy.register.isolation.group.blacklist=
spring.application.strategy.register.isolation.group.whitelist=

优化GatewayStrategyRouteFilter逻辑

  • 减少一次ServerWebExchange mutate Request次数

优化SPEL逻辑

  • 增加对HeaderMap为空的处理

规范化类结构和类名

  • 重构相关类名,去掉冗余逻辑
  • Opentracing改为OpenTracing,Opentelemetry改为OpenTelemetry,Opentracing改为OpenTracing

修改Banner旗标

  • 优化OpenTracing Banner
  • 优化OpenTelemetry Banner

完善本框架Pom的描述

  • 更正pom.xml里的description

缺陷修复

修复双重异步的缺陷

  • 修复业务异步和Hystrix线程池隔离异步,丢失策略路由Header的缺陷。感谢@zifeihan的PR

修复上下文传递的缺陷

  • 修复非网关驱动模式下,从配置中心获取策略后,非Http请求触发(例如,通过MQ方式触发,定时Task触发),无法传递策略路由Header到下级全链路服务。感谢@fengfeng Li的PR

修复Redis订阅机制的缺陷

  • 修复Bean跟spring-session-data-redis包的冲突,重命名redisMessageListenerContainer为configMessageListenerContainer

修复规则策略解析的缺陷

  • 当配置值为空字符串,抛出空指针的缺陷

修复全局配置和局部配置复合下取值逻辑的缺陷

  • 复合配置缺失配置文本值的赋值

修复Common的缺陷

  • 修复StringUtil.split的缺陷

修复Hystrix线程池隔离插件的开关

  • spring.application.strategy.rest.request.decorator.enabled默认值改为true,跟DiscoveryAgent保持一致

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.21.0(JAN 1, 2021)

01 Jan 04:01
Compare
Choose a tag to compare

见 Nepxion Discovery 6.5.0 发布

6.3.3(OCT 20, 2020)

19 Oct 14:01
Compare
Choose a tag to compare

发布日志

发布策略

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

提醒:Spring Boot版本和Spring Cloud Alibaba版本需要在版本号后面加上.RELEASE

版本 状态 SC版本 SB版本 SCA版本
6.3.3 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.20.3 E 1.5.x 1.5.x
2.0.x D 1.x.x N/A
1.0.x C 1.x.x N/A

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

  • 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)已废弃

版本变更

无中间件版本变更

依赖变更

管理中心插件依赖独立

如果使用者想使用该插件,需要手工引入。例如,在服务侧的依赖,变更如下

<dependencies>
    <!-- 1.注册中心插件 -->
    <dependency>
        <groupId>com.nepxion</groupId>
        <artifactId>discovery-plugin-register-center-starter-nacos</artifactId>
        <version>${discovery.version}</version>
    </dependency>

    <!-- 2.配置中心插件 -->
    <dependency>
        <groupId>com.nepxion</groupId>
        <artifactId>discovery-plugin-config-center-starter-nacos</artifactId>
        <version>${discovery.version}</version>
    </dependency>

    <!-- 3.管理中心插件 -->
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>discovery-plugin-admin-center-starter</artifactId>
        <version>${discovery.version}</version>
    </dependency>

    <!-- 4.服务的策略编排插件 -->
    <dependency>
        <groupId>com.nepxion</groupId>
        <artifactId>discovery-plugin-strategy-starter-service</artifactId>
        <version>${discovery.version}</version>
    </dependency>
</dependencies>

异步跨线程Agent插件依赖独立

为使异步跨线程Agent插件更具通用性,从Discovery工程独立出去,单独以DiscoveryAgent工程呈现,请访问

https://github.com/Nepxion/DiscoveryAgent

插件入口的包名简化为

discovery-agent-starter-${discovery.agent.version}.jar

并提供相关插件扩展指南示例,请访问

https://github.com/Nepxion/DiscoveryAgentGuide

功能迭代

灰度路由下的版本故障转移

版本故障转移,即无法找到相应版本的服务实例,路由到老的稳定版本的实例。其作用是防止灰度版本路由人为设置错误,或者对应的版本实例发生灾难性的全部下线,导致流量有损

故障转移方式,对版本号进行排序,取第一个版本号,所以此方案的前置条件是必须版本号是规律的有次序,例如,以时间戳的方式。如果所有服务实例的版本号未设置,那么将转移到未设置版本号的实例上

需要通过如下开关开启该功能

# 启动和关闭版本故障转移。缺失则默认为false
spring.application.strategy.version.failover.enabled=true

并行灰度路由下的版本偏好策略

版本偏好,即非灰度路由场景下,路由到老的稳定版本的实例。其作用是防止多个网关上并行实施灰度版本路由产生混乱,对处于非灰度状态的服务,调用它的时候,只取它的老的稳定版本的实例;灰度状态的服务,还是根据传递的Header版本号进行匹配

偏好方式,对版本号进行排序,取第一个版本号,所以此方案的前置条件是必须版本号是规律的有次序,例如,以时间戳的方式。如果所有服务实例的版本号未设置,那么将转移到未设置版本号的实例上

需要通过如下开关开启该功能

# 启动和关闭版本偏好。缺失则默认为false
spring.application.strategy.version.prefer.enabled=true

增加SLF4J MDC异步Agent插件

需要通过如下开关开启该功能

-Dthread.mdc.enabled=true

增加自定义异步Agent插件开关控制机制

需要通过isEnabled方法覆盖实现开关控制插件生效/失效机制

以MDCPlugin为例,表示thread.mdc.enabled=true的时候,开启该插件

public class MDCPlugin extends AbstractPlugin {
    private Boolean threadMDCEnabled = Boolean.valueOf(System.getProperty("thread.mdc.enabled", "false"));

    @Override
    protected String getMatcherClassName() {
        return "org.slf4j.MDC";
    }

    @Override
    protected String getHookClassName() {
        return MDCContextHook.class.getName();
    }

    @Override
    protected boolean isEnabled() {
        return threadMDCEnabled;
    }
}

缺陷修复

修复IP地址和端口路由的缺陷

遗漏对非Json格式的端口路由Header支持

修复异步场景下域名灰度路由的缺陷

修复异步场景下,Http Request获取RequestURL的空指针异常

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.20.3(OCT 20, 2020)

19 Oct 14:00
Compare
Choose a tag to compare

见 Nepxion Discovery 6.3.3 发布