Skip to content

Releases: Nepxion/Discovery

5.4.2(OCT 18, 2019)

18 Oct 15:50
Compare
Choose a tag to compare

Nepxion Discovery 5.4.2 发布

发布日志

版本更新:

  • 升级Spring Boot到2.1.9.RELEASE

服务端更新:

  • 增加服务本身的权重路由
  • 修复叠加执行权重规则和版本区域策略会失效的Bug
  • 修复DiscoveryEnabledStrategy中apply方法执行两次的Bug
  • 优化主Pom结构
  • 优化FeignStrategyInterceptorAdapter和RestTemplateStrategyInterceptorAdapter
  • 优化FeignStrategyInterceptor和RestTemplateStrategyInterceptor拦截Header输出的顺序
  • 优化Sentinel模块
  • 优化随机权重时候,权重配置全部为0的情况下,抛出的异常信息
  • 勘误discovery-plugin-strategy-sentinel的additional-spring-configuration-metadata.json下相关path的defaultValue值
  • 统一用户自定义的类名规范,统一以Default为类名开头,例如:DefaultDiscoveryEnabledStrategy,DefaultGatewayStrategyRouteFilter,DefaultGatewayStrategyTracer
  • 重构和优化类结构
  • 重构内部静态变量名
  • 精简日志输出

网关端更新:

  • 修正前端传递Header实现灰度路由失效的Bug
  • 重构和优化类结构

分支更新:

  • Edgware分支改名为3.x.x
  • Finchley分支改名为4.x.x

示例更新:

  • 增加FeignStrategyInterceptorAdapter和RestTemplateStrategyInterceptorAdapter的使用示例
  • 增加DiscoveryEnabledStrategy的实现类中,IP地址和端口的打印
  • 增加根据RPC调用传来的方法参数(例如接口名、方法名、参数名或参数值等),选取执行调用请求的服务实例
  • 增加控制台示例

不兼容项:

  • AbstractServiceSentinelRequestOriginAdapter改名为DefaultServiceSentinelRequestOriginAdapter

源码主页

https://github.com/Nepxion/Discovery

指南主页

https://github.com/Nepxion/DiscoveryGuide

文档主页

https://gitee.com/Nepxion/Docs/tree/master/web-doc

其它版本

同时发布的版本,还包括:

  • Nepxion Discovery 4.12.2,支持Finchley版
  • Nepxion Discovery 3.12.2,支持Edgware版

4.12.2(OCT 18, 2019)

18 Oct 15:55
Compare
Choose a tag to compare

见 Nepxion Discovery 5.4.2 发布

3.12.2(OCT 18, 2019)

18 Oct 15:54
Compare
Choose a tag to compare

见 Nepxion Discovery 5.4.2 发布

5.4.0(SEP 28, 2019)

27 Sep 20:01
Compare
Choose a tag to compare

Nepxion Discovery 5.4.0 发布

发布日志

版本更新:

  • 升级Spring Cloud到Greenwich.SR3,确定对Spring Cloud Hoxton版的支持计划
  • 升级Spring Boot版本到2.1.8.RELEASE,并解决spring-web-5.1.9.RELEASE和5.1.8.RELEASE中header设置和传递的不兼容问题(Spring也玩不兼容)

服务端更新:

增加Alibaba Sentinel和灰度路由的有机整合,包括:

  • 封装远程配置中心和本地规则文件的读取逻辑,即优先读取远程配置,如果不存在或者规则错误,则读取本地规则文件。动态实现远程配置中心对于规则的热刷新
  • 封装NacosDataSource和ApolloDataSource,支持Nacos和Apollo两个远程配置中心,零代码实现Sentinel功能。更多的远程配置中心,请参照Sentinel官方的DataSource并自行集成,参考discovery-plugin-strategy-sentinel-starter-nacos下2个类和spring.factories
  • 支持原生的流控规则、降级规则、授权规则、系统规则、热点参数流控规则
  • 支持扩展LimitApp的机制,通过动态的Http Header方式实现组合式防护机制,包括基于服务名、基于灰度组、基于灰度版本、基于灰度区域、基于机器地址和端口等防护机制,支持自定义任意的业务参数组合实现该功能,例如,根据传入的微服务灰度版本号+用户名,组合在一起进行熔断
  • 支持微服务侧Actuator、Swagger和Rest三种方式的规则写入
  • 支持控制台侧基于微服务名的Actuator、Swagger和Rest三种方式的批量规则写入
  • 支持下面开关关闭上述功能
spring.application.strategy.sentinel.enabled=true
  • 增加Sentinel和Hystrix的Banner输出

网关端更新:

  • 去除GatewayStrategyFilter,合并到AbstractGatewayStrategyRouteFilter,此改动修复了Finchley版灰度路由时的上下文丢失的重大Bug
  • AbstractGatewayStrategyRouteFilter和AbstractZuulStrategyRouteFilter,增加extendFilter的方法,可以被业务层覆盖,可减少一层Filter
  • 增加GatewayStrategyClearFilter,用以清除GatewayStrategyContext的ThreadLocal对象
  • 去除多余的配置
spring.application.strategy.gateway.route.filter.enabled=true
spring.application.strategy.zuul.route.filter.enabled=true

负载均衡更新:

  • 增加微服务侧和网关侧,负载均衡下,消费端尝试获取对应提供端初始服务实例列表为空的时候,进行重试的功能,参考下列配置:
# 负载均衡下,消费端尝试获取对应提供端初始服务实例列表为空的时候,进行重试。缺失则默认为false
# spring.application.no.servers.retry.enabled=false
# 负载均衡下,消费端尝试获取对应提供端初始服务实例列表为空的时候,进行重试的次数。缺失则默认为5
# spring.application.no.servers.retry.times=5
# 负载均衡下,消费端尝试获取对应提供端初始服务实例列表为空的时候,进行重试的时间间隔。缺失则默认为2000
# spring.application.no.servers.retry.await.time=2000
# 负载均衡下,消费端尝试获取对应提供端服务实例列表为空的时候,通过日志方式通知。缺失则默认为false
# spring.application.no.servers.notify.enabled=false

配置更新:

  • 增加Nacos properties获取方式,整合Sentinel NacosDataSource和灰度配置,两个配置实现共享
  • 增强Apllo namespace获取方式,整合Sentinel ApolloDataSource和灰度配置,先从apollo.bootstrap.namespaces方式获取,如果不存在则通过apollo.plugin.namespace获取,如果不存在,默认赋予application值
  • 外部元数据设置方式从-Dext.abc变更为-Dmetadata.abc,更易理解

外部接口更新:

  • 增加微服务侧和控制台侧灰度版本动态修改的权限控制

测试更新:

  • 去除自动化测试中的配置,因为基于Group推送规则到服务无法和推送到远程配置中心兼容,新版本中只保留基于后者的自动化测试方式
# 测试用例的配置内容推送到远程配置中心,还是到服务。缺失则默认为true
spring.application.test.configcenter.enabled=true

功能更新:

  • 优化灰度发布本地规则文件的读取逻辑

示例更新:

感谢:

源码主页

https://github.com/Nepxion/Discovery

指南主页

https://github.com/Nepxion/DiscoveryGuide

文档主页

https://gitee.com/Nepxion/Docs/tree/master/web-doc

其它版本

同时发布的版本,还包括:

  • Nepxion Discovery 4.12.0,支持Finchley版
  • Nepxion Discovery 3.12.0,支持Edgware版

4.12.0(SEP 28, 2019)

27 Sep 20:00
Compare
Choose a tag to compare

见 Nepxion Discovery 5.4.0 发布

3.12.0(SEP 28, 2019)

27 Sep 19:59
Compare
Choose a tag to compare

见 Nepxion Discovery 5.4.0 发布

5.3.9(AUG 28, 2019)

28 Aug 00:17
Compare
Choose a tag to compare

Nepxion Discovery 5.3.9 发布

  1. 修复兼容未带有Discovery版本的原生服务的负载均衡
  2. 以前版本只在网关端支持CustomizationStrategyRouteFilter,现在在服务端也能支持。变更方式CustomizationGatewayStrategyRouteFilter和CustomizationZuulStrategyRouteFilter抽象到框架层,下面的代码不需要加在业务代码中
@Bean
@ConditionalOnProperty(value = GatewayStrategyConstant.SPRING_APPLICATION_STRATEGY_GATEWAY_ROUTE_FILTER_ENABLED, matchIfMissing = true)
public GatewayStrategyRouteFilter gatewayStrategyRouteFilter() {
    return new MyGatewayStrategyRouteFilter();
}

@Bean
@ConditionalOnProperty(value = ZuulStrategyConstant.SPRING_APPLICATION_STRATEGY_ZUUL_ROUTE_FILTER_ENABLED, matchIfMissing = true)
public ZuulStrategyRouteFilter zuulStrategyRouteFilter() {
    return new MyZuulStrategyRouteFilter();
}
  1. 修正未引入discovery-plugin-strategy-starter-xxx包(事实上,强烈建议引入该类的包),出现spring.application.type为空的Bug。如果未引入,则该值默认处理未unknown
  2. 修正未引入discovery-plugin-strategy-starter-xxx包(事实上,强烈建议引入该类的包),出现pluginContextHolder未空的Bug
  3. 增加模拟压力传输指定容量的字符串的工具类,对于性能压力测试比较有用,使用方式
StringUtil.simulateText(1024),将产生1K大小的字符串
  1. 增加自动化测试功能,支持普通调用和灰度调用的自动化测试
  2. 增加pluginAdapter.getPluginInfo方法,用于判断灰度发布和路由的准确性校验
  3. 增加默认的空规则在DiscoveryConstant里
  4. 优化增加内置配置文件的功能
  5. 修复全链路随机权重的Bug
  6. 修复路由接口的权重设置Bug
  7. 增加additional-spring-configuration-metadata.json,支持IDE自动弹出和补全配置
  8. 修复变量命名和拼写错误
  9. 修订不正确的配置注释
  10. 修订和优化用户文档

4.11.9(AUG 28, 2019)

28 Aug 00:17
Compare
Choose a tag to compare

见 Nepxion Discovery 5.3.9 发布

3.11.9(AUG 28, 2019)

28 Aug 00:16
Compare
Choose a tag to compare

见 Nepxion Discovery 5.3.9 发布

5.3.3(AUG 12, 2019)

12 Aug 10:56
Compare
Choose a tag to compare

Nepxion Discovery 5.3.3 发布

  1. 优化传递Header的性能,只有开启调用链模式,才会传递必要的Header
  2. 增加灰度调用链的MDC日志输出机制
  3. 修改线程切换上下文丢失或者在过滤器设置ThreadLocal之前执行获取上线文的错误提示
  4. 增加配置参数
# 用户自定义和编程灰度路由策略的时候,对REST方式调用拦截的时候(支持Feign或者RestTemplate调用),希望把来自外部自定义的Header参数(用于框架内置上下文Header,例如:traceid, spanid等)传递到服务里,那么配置如下值。如果多个用“;”分隔,不允许出现空格
# spring.application.strategy.context.request.headers=traceid;spanid
  1. 更改配置参数
    为了区分框架内置上下文Header的配置
# 用户自定义和编程灰度路由策略的时候,对REST方式调用拦截的时候(支持Feign或者RestTemplate调用),希望把来自外部自定义的Header参数(用于业务系统子定义Header,例如:mobile)传递到服务里,那么配置如下值。如果多个用“;”分隔,不允许出现空格
spring.application.strategy.request.headers=mobile

更改为

# 用户自定义和编程灰度路由策略的时候,对REST方式调用拦截的时候(支持Feign或者RestTemplate调用),希望把来自外部自定义的Header参数(用于业务系统子定义Header,例如:mobile)传递到服务里,那么配置如下值。如果多个用“;”分隔,不允许出现空格
spring.application.strategy.business.request.headers=mobile
  1. 增加DiscoveryGray极简示例的MDC日志使用方式
  2. 增加内置配置文件的功能。参考如下配置
# 业务系统希望大多数时候Spring、SpringBoot或者SpringCloud的基本配置、调优参数(非业务系统配置参数),不配置在业务端,集成到基础框架里。但特殊情况下,业务系统有时候也希望能把基础框架里配置的参数给覆盖掉,用他们自己的配置
# 对于此类型的配置需求,可以配置在下面的配置文件里。该文件一般放在resource目录下。缺失则默认为spring-application-default.properties
# spring.application.default.properties.path=spring-application-default.properties
  1. 增加Spring Boot容器为Servlet容器还是Reactive容器的判断逻辑
  2. 修正AnnotationConfigEmbeddedWebApplicationContext的判断逻辑
  3. 移动postman脚本路径