Skip to content

6.17.0(SEP 30, 2022)

Compare
Choose a tag to compare
@HaojunRen HaojunRen released this 30 Sep 11:10
· 250 commits to 6.x.x since this release

发布日志

发布策略

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

版本 状态 SC SB SCA
8.0.0 (商业版) 2021.x.x 2.7.x
2.6.x
2021.x.x.x
7.0.0 (商业版) 2020.x.x 2.5.x
2.4.1 ↑
2021.x
6.17.0 H.SR5 ↑
H
G
F
2.3.x
2.2.x
2.1.x
2.0.x
2.2.7.RELEASE ↑
6.12.7 ↓ H.SR5 ↑
H
G
F
2.3.x
2.2.x
2.1.x
2.0.x
2.2.6.RELEASE ↓
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.34.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

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

  • 8.x.x版本(适用于2021.x.x)将继续维护
  • 7.x.x版本(适用于2020.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)已废弃

版本变更

功能迭代

新增运维平台进行蓝绿灰度发布接口

基于简化版的Json格式,实现蓝绿灰度发布

① 新增创建版本蓝绿灰度发布接口

String createVersionRelease(String group, ConditionStrategy conditionStrategy);

String createVersionRelease(String group, String serviceId, ConditionStrategy conditionStrategy);

Json格式如下:

  • 兜底策略
{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"]
}
  • 蓝绿发布策略
{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "blueGreen": [
    {
      "expression": "#H['a'] == '1'",
      "route": "green"
    }, 
    {
      "expression": "#H['a'] == '2'",
      "route": "blue"
    }
  ]
}
  • 灰度发布策略
{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "gray": [
    {
      "weight": [0, 100]
    }
  ]
}

② 新增解析版本蓝绿灰度发布接口

String parseVersionRelease(ConditionStrategy conditionStrategy);

③ 新增清除蓝绿灰度发布接口

String clearRelease(String group);

String clearRelease(String group, String serviceId);

更多详情,请参考https://github.com/Nepxion/Discovery/wiki/如何对接DevOps运维平台实施蓝绿灰度发布最佳企业级实践

新增运维平台进行故障转移API接口

① 新增创建故障转移接口

String createFailover(FailoverType failoverType, String group, String failoverValue);

String createFailover(FailoverType failoverType, String group, String serviceId, String failoverValue);

② 新增清除故障转移接口

String clearFailover(String group, FailoverType failoverType);

String clearFailover(String group, String serviceId, FailoverType failoverType);

新增运维平台进行无损下线API接口

① 新增屏蔽黑名单接口。除了IP地址和端口外,增加直接添加serviceUUId的接口

该两个接口不仅可以支持单个UUId,也可以支持UUId的通配。例如:

  • A服务有两个实例,实例1的UUId为20220920-113301-033-4289-533-056,实例2的UUId为20220920-113259-190-5762-550-884,代表它们同一天2022年09月20日上线
  • 通过20220920*通配符的方式,表示屏蔽2022年09月20日上线的指定服务的所有实例,如果希望更精确,20220920-11*,表示屏蔽2022年09月20日11点上线的指定服务的所有实例
String addBlacklist(String group, String targetServiceId, String targetServiceUUId);

String addBlacklist(String group, String serviceId, String targetServiceId, String targetServiceUUId);

② 新增清除黑名单接口

boolean clearBlacklist(String group);

boolean clearBlacklist(String group, String serviceId);

新增运维平台进行网关动态路由API接口

boolean updateRemoteRoute(GatewayType gatewayType, String group, String serviceId, String route);

boolean clearRemoteRoute(GatewayType gatewayType, String group, String serviceId);

String getRemoteRoute(GatewayType gatewayType, String group, String serviceId);

新增运维平台进行Sentinel限流熔断API接口

boolean updateRemoteSentinel(SentinelRuleType ruleType, String group, String serviceId, String rule);

boolean clearRemoteSentinel(SentinelRuleType ruleType, String group, String serviceId);

String getRemoteSentinel(SentinelRuleType ruleType, String group, String serviceId);

新增运维平台进行规则配置对象获取API接口

boolean updateRemoteRuleEntity(String group, String serviceId, RuleEntity ruleEntity) throws Exception;

RuleEntity getRemoteRuleEntity(String group, String serviceId) throws Exception;

新增运维平台进行流量侦测API接口

String inspect(String protocol, String portalId, String contextPath, String services);

新增UUId和AppId作为路由侦测的属性

gateway 
-> [ID=discovery-guide-service-a][UID=20220920-113259-190-5762-550-884][AID=11798][T=service][P=Nacos][H=192.168.31.237:3002][V=1.1][R=qa][E=common][Z=zone2][G=discovery-guide-group][A=true][TID=6f6addfd51494ff6][SID=403c9410afcfae78] 
-> [ID=discovery-guide-service-b][UID=20220920-113300-733-9197-181-332][AID=11799][T=service][P=Nacos][H=192.168.31.237:4002][V=1.1][R=dev][E=common][Z=zone2][G=discovery-guide-group][A=false][TID=6f6addfd51494ff6][SID=517d61bdbb2013b1]

AppId是Apollo配置中心独有的,如果使用的不是Apollo配置中心,将不会显示这个属性

补全运维接口数据

  • 补全InstanceEntity属性,暴露给运维平台的接口数据更加齐全
  • 暴露注册到元数据的AppID给运维平台
  • 为避免注册中心元数据冲突,app_id更名为spring_application_app_id,使其与spring_application_name和spring_application_uuid统一

增加服务端点精细化控制

增加新的开关配置

# 启动和关闭服务相关操作端点。缺失则默认为true
spring.application.admin.service.endpoint.enabled=true
# 启动和关闭配置相关操作端点。缺失则默认为true
spring.application.admin.config.endpoint.enabled=true
# 启动和关闭版本相关操作端点。缺失则默认为true
spring.application.admin.version.endpoint.enabled=true
# 启动和关闭侦测相关操作端点。缺失则默认为true
spring.application.admin.inspector.endpoint.enabled=true
# 启动和关闭路由相关操作端点。缺失则默认为true
spring.application.admin.router.endpoint.enabled=true
# 启动和关闭策略相关操作端点。缺失则默认为true
spring.application.admin.strategy.endpoint.enabled=true
# 启动和关闭Sentinel相关操作端点。缺失则默认为true
spring.application.admin.sentinel.endpoint.enabled=true
# 启动和关闭Git相关操作端点。缺失则默认为true
spring.application.admin.git.endpoint.enabled=true
# 启动和关闭Spring Cloud Gateway相关操作端点。缺失则默认为true
spring.application.admin.gateway.endpoint.enabled=true
# 启动和关闭Zuul相关操作端点。缺失则默认为true
spring.application.admin.zuul.endpoint.enabled=true

去除旧的无意义的开关配置

# 开启和关闭服务注册层面的控制。一旦关闭,服务注册的黑/白名单过滤功能将失效,最大注册数的限制过滤功能将失效。缺失则默认为true
spring.application.register.control.enabled=true
# 开启和关闭服务发现层面的控制。一旦关闭,服务多版本调用的控制功能将失效,动态屏蔽指定IP地址的服务实例被发现的功能将失效。缺失则默认为true
spring.application.discovery.control.enabled=true
# 开启和关闭通过Rest方式对规则配置的控制和推送。一旦关闭,只能通过远程配置中心来控制和推送。缺失则默认为true
spring.application.config.rest.control.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

增强和优化Swagger

除了提供基本的Swagger功能之外,内置模块还对使用者提供扩展

自定义Swagger接口利用内置的SwaggerConfiguration来初始化,这样使用者可以不需要定义自己的SwaggerConfiguration。通过如下配置实现

# 启动和关闭Swagger。缺失则默认为true
swagger.enabled=true
# 业务服务Swagger Docket组名
swagger.service.group=Your group
# 业务服务Swagger扫描目录
swagger.service.packages=your-package1;your-package2
# 业务服务Swagger描述
swagger.service.description=Your service Restful APIs
# 业务服务Swagger版本
swagger.service.version=1.0.0
# 业务服务Swagger License名称
swagger.service.license.name=Apache License 2.0
# 业务服务Swagger License链接
swagger.service.license.url=http://www.apache.org/licenses/LICENSE-2.0
# 业务服务Swagger联系人名称
swagger.service.contact.name=Nepxion
# 业务服务Swagger联系人网址
swagger.service.contact.url=https://github.com/Nepxion/Discovery
# 业务服务Swagger联系人邮件
swagger.service.contact.email=1394997@qq.com
# 业务服务Swagger服务条件网址
swagger.service.termsOfService.url=http://nepxion.com/discovery

增加蓝绿灰度混合发布自动化测试用例

重构优化

  • 优化PluginAdapter
  • 优化InstanceEntityWrapper
  • 优化和精简元数据Metadata

缺陷修复

相关发布

DiscoveryAgent发布

DiscoveryDesktop发布

相关下载

DiscoveryAgent下载

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

DiscoveryDesktop下载

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