Skip to content

Releases: Nepxion/Discovery

6.12.1(SEP 6, 2021)

06 Sep 13:00
Compare
Choose a tag to compare

发布日志

发布策略

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

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

版本变更

功能迭代

重构优化

缺陷修复

增加Hystrix非空判断,参考 :https://github.com/Nepxion/Discovery/issues/174

相关发布

DiscoveryAgent发布

DiscoveryDesktop发布

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.28.1(SEP 6, 2021)

06 Sep 12:59
Compare
Choose a tag to compare

见 Nepxion Discovery 6.12.1 发布

6.12.0(SEP 1, 2021)

01 Sep 09:09
Compare
Choose a tag to compare

贡献列表

发布日志

发布策略

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

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

版本变更

  • 默认集成Apollo版本为1.9.0
  • 默认集成SkyWalking版本为8.7.0
  • 默认集成OpenTelemetry版本为1.5.0
  • 默认集成JEtcd版本为0.5.10

功能迭代

Sentinel熔断指标监控

全链路调用过程中,实施端到端Sentinel熔断时,在不同场景下会触发如下四个事件

  • Pass
  • Block
  • Success
  • Exception

通过Prometheus Micrometer对上述事件进行计数统计,可输出Grafana看板上。感谢@Tank-zhu的PR

使用者可以通过如下开关打开或者关闭输出功能项

# 启动和关闭Sentinel Metric通过次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.pass.qps.output.enabled=true
# 启动和关闭Sentinel Metric阻塞次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.block.qps.output.enabled=true
# 启动和关闭Sentinel Metric成功次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.success.qps.output.enabled=true
# 启动和关闭Sentinel Metric异常次数统计输出功能。缺失则默认为true
spring.application.strategy.metric.sentinel.exception.qps.output.enabled=true

重构优化

重构优化随机权重架构

随机权重算法目前包括基于Array数组机制和Map的TreeMap机制的随机权重算法,支持用户自定义WeightRandom的算法扩展。感谢@flyingglass的PR

缺陷修复

① 修复SentinelTracerProcessorSlotEntryCallback中Sentinel Rule为空的缺陷

② 统一权重值为整数类型

相关发布

DiscoveryAgent发布

DiscoveryDesktop发布

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.28.0(SEP 1, 2021)

01 Sep 09:07
Compare
Choose a tag to compare

见 Nepxion Discovery 6.12.0 发布

6.11.0(JUL 11, 2021)

11 Jul 03:29
Compare
Choose a tag to compare

贡献列表

  • 感谢@pegasus的贡献
  • 感谢@zifenhan的贡献
  • 感谢@ayang的贡献
  • 感谢@星河的贡献
  • 感谢@jimodebeiju123的贡献
  • 感谢@rottenmu的测试
  • 感谢@春雷的测试
  • 感谢@blank的测试
  • 感谢@弄潮儿的测试
  • 感谢@明天better的测试
  • 感谢@陌路的测试

发布日志

6.11.0版,一个经过全面严格优化和严格测试的版本,架构科学性、代码规范性和高可用以及性能方面上更上一层楼,除此之外,暴露了更加丰富的端点(Endpoint)接口,供第三方云原生系统(例如,DevOps平台)做对接。不过,对于非核心的模块优化和重构,带来一些使用上的不兼容性,向广大用户致以歉意,我们相信您可以在几分钟内解决不兼容性问题。Please enjoy!

发布策略

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

版本 状态 SC SB SCA
7.0.0 (商业版) 202x.x.x 2.5.x
2.4.1 ↑
202x.x
6.11.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.27.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.12.RELEASE(可降级
  • 默认集成Spring Cloud版本为Hoxton.SR12(可降级),Hoxton.SR12为Spring Cloud官方发布的最后一个版本
  • 默认集成Spring Cloud Alibaba版本为2.2.6.RELEASE(可降级
  • 默认集成Nacos 1.4.x以上版本。如果使用1.4.x以下版本,那么
    • 跟业务服务相关的Plugin模块不受影响
    • 跟业务服务不相关的Console模块受影响,新增的Rest接口/config/remote/update/{group}/{serviceId}/{formatType}无法使用,必须使用不带{formatType}参数的老接口
    • Nacos 1.4.x以上版本推送参数新增配置文件类型(包括 xml | json | yaml | properties | html | text),可以让配置在Nacos界面上有效区别出不同的配置类型并高亮,从而提高易用性
  • 默认集成Caffeine版本为2.9.2
  • 默认集成SkyWalking APM Toolkit版本为8.6.0
  • 默认集成OpenTelemetry版本为1.3.0
  • 升级JEtcd版本为0.5.7,解决在Hoxton高版本抛Netty Grpc版本不兼容的错误

功能迭代

增强蓝绿灰度发布

① 蓝绿发布支持内置兜底路由

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy-release>
        <conditions type="blue-green">
            <!-- 蓝路由,条件expression驱动 -->	
            <condition id="blue-condition" expression="#H['a'] == '1'" version-id="blue-route"/>
            <!-- 绿路由,条件expression驱动 -->
            <condition id="green-condition" expression="#H['a'] == '1' and #H['b'] == '2'" version-id="green-route"/>
            <!-- 兜底路由,无expression驱动 -->
            <condition id="basic-condition" version-id="basic-route"/>
        </conditions>

        <routes>
            <route id="blue-route" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>	
            <route id="green-route" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
            <route id="basic-route" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
        </routes>
    </strategy-release>
</rule>

② 灰度发布支持内置兜底路由

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy-release>
        <conditions type="gray">
            <!-- 灰度路由1,条件expression驱动 -->
            <condition id="gray-condition1" expression="#H['a'] == '1'" version-id="gray-route=10;stable-route=90"/>
            <!-- 灰度路由2,条件expression驱动 -->
            <condition id="gray-condition2" expression="#H['a'] == '1' and #H['b'] == '2'" version-id="gray-route=85;stable-route=15"/>
            <!-- 兜底路由,无expression驱动 -->
            <condition id="basic-condition" version-id="gray-route=0;stable-route=100"/>
        </conditions>

        <routes>
            <route id="gray-route" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
            <route id="stable-route" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
        </routes>
    </strategy-release>
</rule>

③ 蓝绿灰度混合发布

基于上述增强,支持更简单更强大的蓝绿灰度混合发布功能

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy-release>
        <conditions type="blue-green">
            <condition id="condition-0" expression="#H['a'] == '0'" version-id="route-0"/>
            <condition id="condition-1" expression="#H['a'] == '1'" version-id="route-1"/>
            <condition id="basic-condition" version-id="basic-route"/> <!-- 可以删除掉蓝绿发布的兜底策略 -->
        </conditions>

        <conditions type="gray">
            <condition id="condition-0" expression="#H['a'] == '2'" version-id="route-0=10;route-1=90"/>
            <condition id="condition-1" expression="#H['a'] == '3'" version-id="route-0=85;route-1=15"/>
            <condition id="basic-condition" version-id="route-0=0;route-1=100"/>
        </conditions>

        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
            <route id="basic-route" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
        </routes>
    </strategy-release>
</rule>

规则解读

原则:蓝绿规则优先于灰度规则

if (a == 0) {
    执行蓝绿发布blue-green的route-0下的路由
} else if (a == 1) {
    执行蓝绿发布blue-green的route-1下的路由
} else {
    执行蓝绿发布blue-green的basic-route下的兜底路由
}

提醒:当蓝绿发布存在兜底策略(basic-condition),灰度发布永远不会被执行

如果删除掉蓝绿发布的兜底策略,那么执行逻辑则变为

if (a == 0) {
    执行蓝绿发布route-0下的路由
} else if (a == 1) {
    执行蓝绿发布route-1下的路由
} else if (a == 2) {
    执行灰度发布route-0=10;route-1=90下的流量百分比分配路由
} else if (a == 3) {
    执行灰度发布route-0=85;route-1=15下的流量百分比分配路由	
} else {
    执行灰度发布route-0=0;route-1=100下的兜底路由
    由于赋予了route-0=0那么流量会全部打到route-1相当于变种的蓝绿发布
}

蓝绿灰度混合发布一些应用场景和示例,可参考

https://github.com/Nepxion/Discovery/wiki -> 如何执行高级蓝绿灰度混合发布

网关动态路由

网关动态路由功能,主要包括

  • 路由动态添加
  • 路由动态修改
  • 路由动态删除
  • 路由动态批量更新
  • 路由查询
  • 路由动态变更后,通过事件总线方式发出事件通知

上述操作,可以通过

  • 网关暴露Rest Endpoint接口实施
  • 控制台暴露Rest Endpoint接口,对同一个网关下若干个实例批量实施
  • 网关订阅配置中心(包括Nacos、Apollo、Consul、Etcd、Redis、Zookeeper)批量实施
Spring-Cloud-Gateway网关动态路由

提醒:Spring Cloud Gateway网关在自动路由模式下,动态路由不能工作

支持Spring Cloud Gateway网关官方断言器和过滤器,也支持用户自定义断言器和过滤器

① Spring Cloud Gateway网关动态路由配置

  • 精简配置
[
    {
        "id": "route0", 
        "uri": "lb://discovery-guide-service-a", 
        "predicates": [
            "Path=/discovery-guide-service-a/**,/x/**,/y/**"
        ], 
        "filters": [
            "StripPrefix=1"
        ]
    }
]
  • 完整配置
[
    {
        "id": "route0", 
        "uri": "lb://discovery-guide-service-a", 
        "predicates": [
            "Path=/discovery-guide-service-a/**,/x/**,/y/**"
        ], 
        "filters": [
            "StripPrefix=1"
        ], 
        "order": 0,
        "metadata": {}
    }
]

② Spring Cloud Gateway网关自定义动态路由配置

自定义方式描述网关内置断言器和过滤器

提醒:自定义方式描述网关内置断言器和过滤器的Key必须遵循如下规则

  • 对于没有显式args定义的配置,类似Path、StripPrefix这种配置,args名称必须是_genkey_序号格式。例如,"_genkey_0": "/discovery-guide-service-a/**"
  • 对于显式args定义的配置,类似Header、Cookie、Query这种配置,args名称遵照Spring Cloud Gateway内置格式,请查看相关文档或者源码。例如,Header的KV格式为header -> regexp,Cookie的KV格式为name->regexp,Query的KV格式为param->regexp
[
    {
        "id": "route0", 
        "uri": "lb://discovery-guide-service-a",
        "userPredicates": [
            {
                "name": "Path",
                "args": {
                    "_genkey_0": "/discovery-guide-service-a/**",
                    "_genkey_1": "/x/**",
                    "_genkey_2": "/y/**"
                }
            },
          {
                "name": "Header",
                "args": {
                    "header": "a",
                    "regexp": "1"
                }
            },
            {
                "name": "Header",
                "args": {
                    "header": "b",
                    "regexp": "2"
                }
            },
            {
                "name": "Cookie",
                "args": {
                    "name": "c",
                    "regexp": "3"
                }
            },
            {
                "name": "Cookie",
                "args": {
                    "name": "d",
                    "regexp": "4"
                }
            },
            {
                "name": "Query",
                "args": {
                    "param": "e",
                    "regexp": "5"
                }
            },
            {
                "name": "Query",
                "args": {
                    "param": "f",
                    "regexp": "6"
                }
            }
        ],
        "userFilters": [
            {
                "name": "StripPrefix",
                "args": {
                    "_genkey_0": "1"
                }
            }
        ]
    }
]

在DiscoveryPlatform界面上,格式为

Path={"_genkey_0":"/discovery-guide-service-a/**", "_genkey_1":"/x/**", "_genkey_2":"/y/**"}
StripPrefix={"...
Read more

3.27.0(JUL 11, 2021)

11 Jul 03:27
Compare
Choose a tag to compare

见 Nepxion Discovery 6.11.0 发布

6.10.0(APR 26, 2021)

25 Apr 19:29
Compare
Choose a tag to compare

贡献列表

  • 感谢@zifenhan的贡献
  • 感谢@pegasus的贡献
  • 感谢@zhongxun的贡献
  • 感谢@霁华的测试验证

发布日志

发布策略

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

版本 状态 SC SB SCA
7.0.0 (商业版) 202x.x.x 2.4.1 ↑ 202x.x
6.10.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.26.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.10.RELEASE(可降级
  • 默认集成Spring Cloud版本为Hoxton.SR11(可降级
  • 默认集成SkyWalking版本为8.5.0
  • 升级EventBus版本为2.0.15
  • 升级Matrix版本为2.0.9

功能迭代

自动扫描目录

自动扫描目录功能为省掉手工配置扫描目录而设定的,当使用者手工配置了扫描目录,则采用使用者配置的目录,如果没配置,则采用自动扫描目录的方式。感谢@zhongxun提供的相关解决方案和代码

如下配置是手工配置扫描目录的样例

# 路由策略的时候,需要指定对业务RestController类的扫描路径。此项配置作用于RPC方式的调用拦截、消费端的服务隔离和调用链三项功能
spring.application.strategy.scan.packages=com.nepxion.discovery.guide.service

① 自动扫描目录的配置

# 启动和关闭自动扫描目录,当扫描目录未人工配置的时候,可以通过自动扫描方式决定扫描目录。缺失则默认为true
spring.application.strategy.auto.scan.packages.enabled=true
# 启动和关闭嵌套扫描,嵌套扫描指扫描非本工程下外部包的目录,可以支持多层嵌套。缺失则默认为false
spring.application.strategy.auto.scan.recursion.enabled=false

② 自动扫描目录的逻辑

在假设的场景中,SpringBoot入口设定扫描目录为com.a,com.a目录下有个Spring对象通过ComponentScan方式设定扫描目录为com.b,com.b目录下有个Spring对象通过ComponentScan方式设定扫描目录为com.c,那么最终计算出来的目录为

嵌套扫描下,得到的扫描目录是

SpringBoot入口所在的目录;com.a;com.b;com.c

非嵌套扫描下,得到的扫描目录是

SpringBoot入口所在的目录;com.a

③ 扩展获取自动扫描目录

使用者可以通过如下代码得到自动扫描目录

public class MyService {
    @Autowired
    private StrategyPackagesExtractor strategyPackagesExtractor;

    public void getPackages() {
        // 获取@SpringBootApplication所在类入口的扫描目录(一般只有一个),返回List<String>类型
        strategyPackagesExtractor.getBasePackagesList();

        // 获取所有嵌套的扫描目录(包括当前工程的所有类中@SpringBootApplication和@ComponentScan注解设定的扫描目录),返回List<String>类型
        strategyPackagesExtractor.getScanningPackagesList();

        // 上面两种目录的相加,返回List<String>类型
        strategyPackagesExtractor.getAllPackagesList();
    }
}

解决本框架和Eureka注册中心原生可用区亲和性功能的冲突

如果采用Eureka注册中心,Ribbon本身就具有可用区亲和性功能,跟本框架类似。通过如下开关,来选择使用Eureka原生的功能(只有亲和性隔离,没有亲和性路由),还是本框架的功能

# 启动和关闭Eureka原生的可用区亲和性。当采用的注册中心是Eureka,并希望使用本框架的可用区亲和性功能,需要关闭Eureka原生的可用区亲和性功能,因为两者是冲突的
niws.loadbalancer.zoneAvoidanceRule.enabled=false

精简优化日志输出

① 精简Matrix Aop日志输出

② 优化Feign、RestTemplate和WebClient日志输出

缺陷修复

修复SkyWalking在WebFlux下TraceId不一致的缺陷

由于SkyWalking的缺陷,apm-toolkit-trace不支持异步获取TraceId,Nepxion Discovery通过在过滤器增强方式,修复SkyWalking在全链路Spring Cloud Gateway下TraceId和服务侧TraceId不一致的缺陷。感谢@zifenhan提供的相关解决方案和代码

使用者可以通过如下代码示例,在Spring Cloud Gateway的过滤器中获取TraceId

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

    @Autowired
    private StrategyMonitorContext strategyMonitorContext;

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

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        LOG.info("获取TraceId={}, SpanId={}", strategyMonitorContext.getTraceId(), strategyMonitorContext.getSpanId());
        
        return chain.filter(exchange);
    }
}

需要注意,虽然在SDK侧能保证全链路TraceId的一致性和唯一性,但SkyWalking仍旧不支持基于WebFlux的手工埋点,即SkyWalking界面上依旧看不到Nepxion蓝绿灰度埋点

修复订阅组件释放资源的缺陷

修复ZooKeeper和Redis取消订阅时,未释放资源的缺陷。感谢@pegasus的PR

相关发布

DiscoveryAgent发布

DiscoveryAgent发布1.0.3版

功能迭代

  • 简化Agent启动命令行

对于如下示例的启动命令行

-javaagent:C:/opt/discovery-agent/discovery-agent-starter-${discovery.agent.version}.jar -Dthread.scan.packages=reactor.core.publisher;org.springframework.aop.interceptor;com.netflix.hystrix;com.nepxion.discovery.guide.service.feign

如下基准扫描目录将不需要配置,通过内置到agent.config中,实现智能扫描。使用者可以增加和删除agent.config的基准扫描目录

reactor.core.publisher;org.springframework.aop.interceptor;com.netflix.hystrix

如下扫描目录仍需要配置,属于业务服务自身的扫描目录

com.nepxion.discovery.guide.service.feign

启动命令行为

-javaagent:C:/opt/discovery-agent/discovery-agent-starter-${discovery.agent.version}.jar -Dthread.scan.packages=com.nepxion.discovery.guide.service.feign

如果业务服务自身的扫描目录下没有Runnable/Callable/Thread/ThreadPool等异步类存在,那么thread.scan.packages也不需要配置,最终启动命令行简化为

-javaagent:C:/opt/discovery-agent/discovery-agent-starter-${discovery.agent.version}.jar

感谢@zifenhan贡献的PR

DiscoveryDesktop发布

DiscoveryDesktop发布1.0.3版

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.26.0(APR 26, 2021)

25 Apr 19:28
Compare
Choose a tag to compare

见 Nepxion Discovery 6.10.0 发布

6.9.0(APR 8, 2021)

08 Apr 07:07
Compare
Choose a tag to compare

发布日志

发布策略

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

版本 状态 SC SB SCA
7.0.0 (商业版) 202x.x.x 2.4.1 ↑ 202x.x
6.9.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.25.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.1.0

功能迭代

集成Dromara Soul网关

提供基于Dromara Soul网关,实现蓝绿灰度等功能,用法和Spring Cloud Gateway、Zuul一致

统一所有注册中心元数据配置

下面元数据的配置方式适用于所有的配置中心,同时也统一Spring Cloud旧版本和2020版的差异化用法

# Spring cloud discovery metadata config
spring.cloud.discovery.metadata.group=discovery-guide-group
spring.cloud.discovery.metadata.version=1.0
spring.cloud.discovery.metadata.region=dev
spring.cloud.discovery.metadata.env=env1
spring.cloud.discovery.metadata.zone=zone1

共享Spring Cloud Alibaba Nacos Config配置

6.9.0以及以后的版本,新的配置跟spring.cloud.nacos.config实现共享,不需要重复配置

下面的新旧配置效果等同,如果新旧配置同时出现,则取值旧配置方式

新的配置方式

# Nacos config for rule
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.access-key=
spring.cloud.nacos.config.secret-key=
spring.cloud.nacos.config.username=
spring.cloud.nacos.config.password=
spring.cloud.nacos.config.namespace=application
spring.cloud.nacos.config.cluster-name=
spring.cloud.nacos.config.context-path=
spring.cloud.nacos.config.config-long-poll-timeout=
spring.cloud.nacos.config.config-retry-time=
spring.cloud.nacos.config.max-retry=
spring.cloud.nacos.config.endpoint=
spring.cloud.nacos.config.endpoint-port=
spring.cloud.nacos.config.is-use-endpoint-parsing-rule=
spring.cloud.nacos.config.is-use-cloud-namespace-parsing=
spring.cloud.nacos.config.encode=
spring.cloud.nacos.config.naming-load-cache-at-start=
spring.cloud.nacos.config.naming-client-beat-thread-count=
spring.cloud.nacos.config.naming-polling-thread-count=
spring.cloud.nacos.config.naming-request-domain-max-retry-count=
spring.cloud.nacos.config.naming-push-empty-protection=
spring.cloud.nacos.config.ram-role-name=
spring.cloud.nacos.config.timout=
...

旧的配置方式

# Nacos config for rule
nacos.server-addr=localhost:8848
nacos.access-key=
nacos.secret-key=
nacos.username=
nacos.password=
nacos.plugin.namespace=application
nacos.plugin.cluster-name=
nacos.plugin.context-path=
nacos.plugin.config-long-poll-timeout=
nacos.plugin.config-retry-time=
nacos.plugin.max-retry=
nacos.plugin.endpoint=
nacos.plugin.endpoint-port=
nacos.plugin.is-use-endpoint-parsing-rule=
nacos.plugin.is-use-cloud-namespace-parsing=
nacos.plugin.encode=
nacos.plugin.naming-load-cache-at-start=
nacos.plugin.naming-client-beat-thread-count=
nacos.plugin.naming-polling-thread-count=
nacos.plugin.naming-request-domain-max-retry-count=
nacos.plugin.naming-push-empty-protection=
nacos.plugin.ram-role-name=
nacos.plugin.timout=

蓝绿灰度告警监控

全链路蓝绿灰度实施过程中,使用者需要快速判断蓝绿灰度是否已经生效,可以通过

  • Debug开关开启,通过控制台输出去判断相关蓝绿灰度Header是否传递,是否相同
  • 依托监控调用链中间件,通过埋点输出去判断相关蓝绿灰度Header是否传递,是否相同

上述方式需要人工观察和干预,并不友好,使用者也可以通过集成如下蓝绿灰度告警监控模块来实现

① 网关和服务加上下面的类

@EventBus
public class MySubscriber {
    @Subscribe
    public void onAlarm(AlarmEvent alarmEvent) {
        // 通过事件总线把告警数据alarmEvent.getContextMap()存储到ElasticSearch、MessageQueue、数据库等
    }
}

并开启如下开关

# 启动和关闭告警,一旦关闭,蓝绿灰度上下文输出都将关闭。缺失则默认为false
spring.application.strategy.alarm.enabled=true

② 通过事件总线把告警数据alarmEvent.getContextMap()存储到ElasticSearch、MessageQueue、数据库等

③ 根据端到端的traceId对应的蓝绿灰度Header是否传递,是否相同,判断蓝绿灰度是否成功

④ 如果不相同,结合DevOps系统发送告警邮件或者通知

⑤ 上下文具体信息列表参考源码:

com.nepxion.discovery.plugin.strategy.monitor.DefaultStrategyAlarm

示例如下:

{n-d-service-group=discovery-guide-group, n-d-version={"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}, n-d-service-type=service, n-d-service-id=discovery-guide-service-b, n-d-service-env=env1, mobile=, n-d-service-region=qa, span-id=c37b54d7fec6bd07, n-d-service-zone=zone1, n-d-service-address=192.168.0.107:4001, trace-id=64c79e1ef68eecf3, n-d-service-version=1.0}

缺陷修复

  • 去掉策略控制开关,该开关意义不大,如果设置为false时候,会导致服务无法正常启动
# 开启和关闭路由策略的控制。一旦关闭,路由策略功能将失效。缺失则默认为true
# spring.application.strategy.control.enabled=true

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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

3.25.0(APR 8, 2021)

08 Apr 07:07
Compare
Choose a tag to compare

见 Nepxion Discovery 6.9.0 发布