Nepxion Discovery 6.3.1 版发布

Stella981
• 阅读 313

Nepxion Discovery 6.3.1 版发布

发布日志

  • 本次发布版本,深入和 Spring Cloud AlibabaNacos团队进行探讨、合作、测试,并结合若干家公司的落地实践,进行优化和重构,以更强大的功能,解决使用者的真正痛点,以更开放的方式,供使用者灵活扩展

  • 欢迎使用Nepxion Polaris集成式脚手架,极大降低Nepxion Discovery接入成本,请访问 Polaris【北极星】企业级云原生微服务框架 : https://github.com/Nepxion/Polaris

发布策略

Nepxion Discovery 6.3.1 版发布 提醒:版本号右边, 表示>=该版本号, 表示<=该版本号
Nepxion Discovery 6.3.1 版发布 提醒:Spring Boot版本和Spring Cloud Alibaba版本需要在版本号后面加上.RELEASE

版本

状态

SC版本

SB版本

SCA版本

6.3.1

Nepxion Discovery 6.3.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

Nepxion Discovery 6.3.1 版发布

G

2.1.x

2.1.x

4.15.0

Nepxion Discovery 6.3.1 版发布

F

2.0.x

2.0.x

3.20.1

Nepxion Discovery 6.3.1 版发布

E

1.5.x

1.5.x

2.0.x

Nepxion Discovery 6.3.1 版发布

D

1.x.x

N/A

1.0.x

Nepxion Discovery 6.3.1 版发布

C

1.x.x

N/A

Nepxion Discovery 6.3.1 版发布 表示维护中 | Nepxion Discovery 6.3.1 版发布 表示不维护,但可用,强烈建议升级 | Nepxion Discovery 6.3.1 版发布 表示不维护,不可用,已废弃

  • 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)已废弃

重大变更

Nepxion Discovery 6.3.1 版发布 为未来更健康的持续性演进框架,使框架结构更趋合理,并在阅读性上更良好,本版本做了如下变更

① 框架结构变更

  • 平行结构改造成树状结构

② 依赖引入变更

  • 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扩展

Nepxion Discovery 6.3.1 版发布 该扩展支持一切Java异步场景,不限于任何Java技术栈和框架

涵盖所有Java框架的异步场景,解决如下6个异步场景下丢失线程上下文的问题

  • @Async

  • Hytrix Thread Pool Isolation

  • Runnable

  • Callable

  • Single Thread

  • Thread Pool

  • 根据规范开发一个插件,插件提供了钩子函数,在某个类被加载的时候,可以注册一个事件到线程上下文切换事件当中,实现业务自定义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批量复原动态元数据自动化测试用例

相关文档

Nepxion Discovery 6.3.1 版发布 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。涉及到指南篇里的灰度路由和发布的基本功能, Nepxion Discovery 6.3.1 版发布 参考 新手快速入门 : 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等高级调用链和灰度调用链的整合

Nepxion Discovery 6.3.1 版发布 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 Discovery 6.3.1 版发布
Nepxion Discovery 6.3.1 版发布
Nepxion Discovery 6.3.1 版发布

本文分享自微信公众号 - Nepxion开源社区(iMicroService)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
2个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
Nepxion Discovery【探索】微服务企业级解决方案
!Alttext(https://oscimg.oschina.net/oscnet/965ad00f540b3c8fbc2bcb789cc028696fa.jpg)NepxionDiscovery【探索】微服务企业级解决方案】NepxionDiscovery【探索】使用指南
Stella981 Stella981
1年前
Nepxion Discovery 6.3.0 版发布
!(https://oscimg.oschina.net/oscnet/a565267045504282862c2ce1e06804b9.jpg)发布日志本次发布版本,深入和SpringCloudAlibaba、Nacos团队进行探讨、合作、测试,并结合若干家公司的落地实践,进行优化和重构,以更强大的功能
Wesley13 Wesley13
1年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue