Releases: Nepxion/Discovery
6.12.1(SEP 6, 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)已废弃
版本变更
无
功能迭代
无
重构优化
无
缺陷修复
增加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)
见 Nepxion Discovery 6.12.1 发布
6.12.0(SEP 1, 2021)
贡献列表
- 感谢@Tank-zhu的贡献
- 感谢@flyingglass的贡献
发布日志
发布策略
提醒:版本号右边, ↑
表示>=该版本号, ↓
表示<=该版本号
表示维护中 | 表示不维护,但可用,强烈建议升级 | 表示不维护,不可用,已废弃
- 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)
见 Nepxion Discovery 6.12.0 发布
6.11.0(JUL 11, 2021)
贡献列表
- 感谢@pegasus的贡献
- 感谢@zifenhan的贡献
- 感谢@ayang的贡献
- 感谢@星河的贡献
- 感谢@jimodebeiju123的贡献
- 感谢@rottenmu的测试
- 感谢@春雷的测试
- 感谢@blank的测试
- 感谢@弄潮儿的测试
- 感谢@明天better的测试
- 感谢@陌路的测试
发布日志
6.11.0版,一个经过全面严格优化和严格测试的版本,架构科学性、代码规范性和高可用以及性能方面上更上一层楼,除此之外,暴露了更加丰富的端点(Endpoint)接口,供第三方云原生系统(例如,DevOps平台)做对接。不过,对于非核心的模块优化和重构,带来一些使用上的不兼容性,向广大用户致以歉意,我们相信您可以在几分钟内解决不兼容性问题。Please enjoy!
发布策略
提醒:版本号右边, ↑
表示>=该版本号, ↓
表示<=该版本号
表示维护中 | 表示不维护,但可用,强烈建议升级 | 表示不维护,不可用,已废弃
- 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={"...
3.27.0(JUL 11, 2021)
见 Nepxion Discovery 6.11.0 发布
6.10.0(APR 26, 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.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)
见 Nepxion Discovery 6.10.0 发布
6.9.0(APR 8, 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)已废弃
版本变更
- 默认集成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
- 修复Etcd配置中心关闭连接的Bug。感谢@ZhangNingPegasus的PR
相关下载
DiscoveryAgent下载
访问https://github.com/Nepxion/DiscoveryAgent/releases
获取最新版本
DiscoveryDesktop下载
访问https://github.com/Nepxion/DiscoveryUI/releases
获取最新版本
3.25.0(APR 8, 2021)
见 Nepxion Discovery 6.9.0 发布