发布日志
本次发布版本,深入和
Spring Cloud Alibaba
、Nacos
团队进行探讨、合作、测试,并结合若干家公司的落地实践,进行优化和重构,以更强大的功能,解决使用者的真正痛点,以更开放的方式,供使用者灵活扩展欢迎使用Nepxion Polaris集成式脚手架,极大降低Nepxion Discovery接入成本,请访问 Polaris【北极星】企业级云原生微服务框架 :
https://github.com/Nepxion/Polaris
发布策略
提醒:版本号右边, ↑
表示>=该版本号, ↓
表示<=该版本号
提醒:Spring Boot版本和Spring Cloud Alibaba版本需要在版本号后面加上.RELEASE
版本
状态
SC版本
SB版本
SCA版本
6.3.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.20.0
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)已废弃
重大变更
为未来更健康的持续性演进框架,使框架结构更趋合理,并在阅读性上更良好,本版本做了如下变更
① 框架结构变更
- 平行结构改造成树状结构
② 依赖引入变更
- Sentinel插件依赖引入变更
<dependency> <groupId>com.nepxion</groupId> <!-- 旧的 --> <artifactId>discovery-plugin-strategy-sentinel-starter-opentracing</artifactId> <!-- 新的 --> <artifactId>discovery-plugin-strategy-starter-sentinel-opentracing</artifactId> </dependency>
<dependency> <groupId>com.nepxion</groupId> <!-- 旧的 --> <artifactId>discovery-plugin-strategy-sentinel-starter-skywalking</artifactId> <!-- 新的 --> <artifactId>discovery-plugin-strategy-starter-sentinel-skywalking</artifactId> </dependency>
<dependency> <groupId>com.nepxion</groupId> <!-- 旧的 --> <artifactId>discovery-plugin-strategy-sentinel-starter-nacos</artifactId> <!-- <artifactId>discovery-plugin-strategy-sentinel-starter-apollo</artifactId> --> <!-- <artifactId>discovery-plugin-strategy-sentinel-starter-local</artifactId> --> <!-- 新的 --> <artifactId>discovery-plugin-strategy-starter-sentinel-nacos</artifactId> <!-- <artifactId>discovery-plugin-strategy-starter-sentinel-apollo</artifactId> --> <!-- <artifactId>discovery-plugin-strategy-starter-sentinel-local</artifactId> --> </dependency>
- 自动化测试插件依赖引入变更
<dependency> <groupId>com.nepxion</groupId> <!-- 旧的 --> <artifactId>discovery-plugin-test-starter</artifactId> <!-- 新的 --> <artifactId>discovery-plugin-test-starter-automation</artifactId> </dependency>
- 自动化测试包名变更
`
com.nepxion.discovery.plugin.test
com.nepxion.discovery.plugin.test.automation
`
③ 第三方版本变更
- 升级Swagger到2.9.2
缺陷修复
修复异步调用链丢失的缺陷
- 修复@Async异步调用埋点Span输出到Skywalking的缺陷
修复异步调用链日志的缺陷
- 修复日志频繁打印的缺陷
功能迭代
支持Nacos动态元数据
- 支持未来Nacos 1.4.0的动态元数据批量修改、删除、复原功能
支持异步Agent扩展
该扩展支持一切Java异步场景,不限于任何Java技术栈和框架
根据规范开发一个插件,插件提供了钩子函数,在某个类被加载的时候,可以注册一个事件到线程上下文切换事件当中,实现业务自定义ThreadLocal的跨线程传递。参考:discovery-plugin-strategy-starter-agent-plugin模块的com.nepxion.discovery.plugin.strategy.starter.agent.plugin.service下的实现方式
plugin目录为放置需要在线程切换时进行ThreadLocal传递的自定义插件。业务自定义插件开发完后,放入到plugin目录下即可
具体步骤介绍,如下
- 新建一个模块,引入如下依赖
<dependency> <groupId>${project.groupId}</groupId> <artifactId>discovery-plugin-strategy-starter-agent</artifactId> <scope>provided</scope> </dependency>
- 新建一个ThreadLocalHook类继承AbstractThreadLocalHook,参考GatewayStrategyContextHook
`public class GatewayStrategyContextHook extends AbstractThreadLocalHook {
@Override
public Object create() {
// 从主线程的ThreadLocal里获取并返回上下文对象
return GatewayStrategyContext.getCurrentContext().getExchange();
}
@Override
public void before(Object object) {
// 把create方法里获取到的上下文对象放置到子线程的ThreadLocal里
if (object instanceof ServerWebExchange) {
GatewayStrategyContext.getCurrentContext().setExchange((ServerWebExchange) object);
}
}
@Override
public void after() {
// 线程结束,销毁上下文对象
GatewayStrategyContext.clearCurrentContext();
}
}
`
- 新建一个Plugin类继承AbstractPlugin,参考DiscoveryGatewayPlugin
`public class DiscoveryGatewayPlugin extends AbstractPlugin {
@Override
protected String getMatcherClassName() {
// 返回存储ThreadLocal对象的类名,由于插件是可以插拔的,所以必须是字符串形式,不允许是显式引入类
return "com.nepxion.discovery.plugin.strategy.gateway.context.GatewayStrategyContext";
}
@Override
protected String getHookClassName() {
// 返回ThreadLocalHook类名
return GatewayStrategyContextHook.class.getName();
}
}
`
- 定义SPI扩展,在src/main/resources/META-INF/services目录下定义SPI文件
名称为固定如下格式
com.nepxion.discovery.plugin.strategy.agent.plugin.Plugin
内容为Plugin类的全路径(以DiscoveryGatewayPlugin为例)
com.nepxion.discovery.plugin.strategy.agent.plugin.gateway.DiscoveryGatewayPlugin
- 上述自定义插件的方式,即可解决使用者在线程切换时丢失ThreadLocal上下文的问题
相关测试
自动化测试
增加Nacos 1.4.0 Open API批量修改动态元数据自动化测试用例
增加Nacos 1.4.0 Open API批量删除动态元数据自动化测试用例
增加Nacos 1.4.0 Open API批量复原动态元数据自动化测试用例
相关文档
Discovery【探索】微服务企业级解决方案
① Discovery【探索】微服务企业级解决方案文档
Discovery【探索】微服务企业级解决方案(PPT版) :
http://nepxion.gitee.io/docs/link-doc/discovery-ppt.html
Discovery【探索】微服务企业级解决方案(PDF版) :
http://nepxion.gitee.io/docs/link-doc/discovery-pdf.html
Discovery【探索】微服务企业级解决方案(HTML版) :
http://nepxion.gitee.io/docs/link-doc/discovery-html.html
② Discovery【探索】微服务企业级解决方案源码。请访问Gitee镜像获得最佳体验
源码Gitee同步镜像 :
https://gitee.com/Nepxion/Discovery
源码Github原镜像 :
https://github.com/Nepxion/Discovery
③ Discovery【探索】微服务企业级解决方案指南示例源码。请访问Gitee镜像获得最佳体验
指南Gitee同步镜像 :
https://gitee.com/Nepxion/DiscoveryGuide
指南Github原镜像 :
https://github.com/Nepxion/DiscoveryGuide
④ Discovery【探索】微服务框架指南示例说明
对于入门级玩家,参考 指南示例极简版 :
https://github.com/Nepxion/DiscoveryGuide/tree/simple
,分支为simple。涉及到指南篇里的灰度路由和发布的基本功能, 参考 新手快速入门 :https://gitee.com/nepxion/DiscoveryGuide/blob/simple/GUIDE.md
对于熟练级玩家,参考 指南示例精进版 :
https://github.com/Nepxion/DiscoveryGuide/tree/master
,分支为master。除上述《极简版》功能外,涉及到指南篇里的绝大多数高级功能对于骨灰级玩家,参考 指南示例高级版 :
https://github.com/Nepxion/DiscoveryGuide/tree/premium
,分支为premium。除上述《精进版》功能外,涉及到指南篇里的ActiveMQ、MongoDB、RabbitMQ、Redis、RocketMQ、MySQL等高级调用链和灰度调用链的整合
Polaris【北极星】企业级云原生微服务框架
① Polaris【北极星】企业级云原生微服务框架文档
Polaris【北极星】企业级云原生微服务框架(PDF版) :
http://nepxion.gitee.io/docs/link-doc/polaris-pdf.html
Polaris【北极星】企业级云原生微服务框架(HTML版) :
http://nepxion.gitee.io/docs/link-doc/polaris-html.html
② Polaris【北极星】企业级云原生微服务框架源码。请访问Gitee镜像获得最佳体验
源码Gitee同步镜像 :
https://gitee.com/Nepxion/Polaris
源码Github原镜像 :
https://github.com/Nepxion/Polaris
③ Polaris【北极星】企业级云原生微服务框架指南示例源码。请访问Gitee镜像获得最佳体验
指南Gitee同步镜像 :
https://gitee.com/Nepxion/PolarisGuide
指南Github原镜像 :
https://github.com/Nepxion/PolarisGuide
请联系我
微信、公众号和文档
本文分享自微信公众号 - Nepxion开源社区(iMicroService)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。