首页 文章 精选 留言 我的

精选列表

搜索[AI生态],共10000篇文章
优秀的个人博客,低调大师

Dante Cloud 3.0.0.0 发布, 步入 Spring Boot 3 生态新时代

Dante Cloud 是一款企业级微服务架构和服务能力开发平台,是全面拥抱 Spring Authorization Server 的、基于 OAuth2.1 协议的微服务架构。基于 Spring Authorization Server 1.0.0、Spring Boot 3.0.0、Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2-2022.0.0、Spring Cloud Alibaba 2021.0.4.0、Nacos 2.2.0 等主流技术栈开发的多租户系统,遵循 SpringBoot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能 平台定位 构建成熟的、完善的、全面的,基于 OAuth2.1 的、前后端分离的微服务架构解决方案。 面向企业级应用和互联网应用设计开发,既兼顾传统项目的微服务化,又满足互联网应用开发建设、快速迭代的使用需求。 平台架构使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,是帮助快速跨越架构技术选型、研究探索阶段的利器。 代码简洁规范、结构合理清晰,是新技术开发应用的典型的、综合性案例,助力开发人员对新兴技术的学习和掌握。 发布背景 自11月24日,Spring Boot 3.0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring 社区的发展,让更多质量更好、性能更优的新特性服务于实际的开发工作,Dante Cloud 也同步进行升级及适配,开发了全新的 3.0 版本。 [1] Dante Cloud 3.0.0 新特性 核心基础依赖便捷切换 新增 Spring Cloud Tencent 和 Spring Cloud 原生微服务全家桶等两种基础设施支持。 新增 Spring Cloud Alibaba、Spring Cloud Tencent 和 Spring Cloud 原生微服务全家桶三种基础设值切换能力,可以以相对便捷的方式切换使用 Alibaba、Tencent、Spring 等基础设施环境。可根据自身实际需求选择,不再局限于只能在某一种基础设施环境中运行。 支持 GraalVM 原生镜像 整体调整各类模块 pom build 配置,适当增加冗余重复配置,以支持 Spring Native 或 GraalVM 编译需要。规避对所有模块进行 Native 编译,而导致错误问题。 Spring Authorization Server 全特性支持及扩展 基于 Spring Authorization Server 和 Spring Data JPA 实现多租户系统架构, 支持 Database 和 Schema 两种模式。 基于 Spring Data JPA,重新构建 Spring Authorization Server 基础数据存储代码,替代原有 JDBC 数据访问方式,破除 Spring Authorization Server 原有数据存储局限,扩展为更符合实际应用的方式和设计。 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义 Resource Ownership Password (密码) 认证模式,以兼容现有基于 OAuth 2 规范的、前后端分离的应用,支持 Refresh Token 的使用。 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义 Social Credentials (社会化登录) 认证模式,支持手机短信验证码、微信小程序、基于 JustAuth 的第三方应用登录, 支持 Refresh Token 的使用。 扩展 Spring Authorization Server 默认的 Client Credentials 模式,实现真正的使用 Scope 权限对接口进行验证。 增加客户端 Scope 的权限配置功能,并与已有的用户权限体系解耦 支持 Spring Authorization Server Authorization Code PKCE 认证模式 在 Spring Authorization Server 的标准的 JWT Token 加密校验方式外,支持基于自定义证书的 JWT Token 加密校验方式,可通过配置动态修改。 支持 Opaque Token (不透明令牌) 格式及校验方式,将低 JWT Token 被捕获解析的风险。可通过修改配置参数,设置默认 Token 格式是采用 Opaque Token 格式还是 JWT Token 格式。 全面支持 OpenID Connect (OIDC) 协议,系统使用时可根据使用需求,通过前端开关配置,快速切换 OIDC 模式和传统 OAuth2 模式 深度扩展 Authorization Code、Resource Ownership Password、Social Credentials 几种模式,全面融合 IdToken、Opaque Token、JWT Token 与现有权限体系,同时提供 IdToken 和 自定义 Token 扩展两种无须二次请求的用户信息传递方式,减少用户信息的频繁请求。 自定义 Spring Authorization Server 授权码模式登录认证页面和授权确认页面,授权码模式登录采用数据加密传输。支持多种验证码类型,暂不支持行为验证码。 无须在代码中配置 Spring Security 权限注解以及权限方法,即可实现接口鉴权以及权限的动态修改。采用分布式鉴权方案,规避 Gateway 统一鉴权的压力以及重复鉴权问题 OAuth2 UserDetails 核心数据支持直连数据库获取和 Feign 远程调用两种模式。OAuth2 直连数据库模式性能更优,Feign 访问远程调用可扩展性更强。可通过配置动态修改采用策略方式。 基于自定义 Session,混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封技术的秘钥动态生成加密传输。利用 “一人一码机制”,实现密码模式登录数据进行动态加密传输。配合 OAuth2 Client 验证,保护接口调用和前后端数据传输的合理性及安全性。 采用 pnpm monorepo 重构前端 前端工程包管理器变更为 pnpm。 采用 monorepo 模式对前端工程进行重构,抽取 utils、components、apis、bpmn-designer 等相关代码,形成共享模块 共享模块已进行优化配置,利用 Vite 可编译成独立的组件,单独以组件形式进行发布 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。 [2] 升级说明 当前版本虽然仍旧集成了 Spring Cloud Alibaba,但目前仅能使用 Nacos 的配置中心功能,同时配合 Zookeeper 作为服务发现和注册使用。Sentinel 等相关功能暂时无法使用。建议现阶段先使用 Spring Cloud Tencent 作为基础设施支撑环境。 待 Spring Cloud Alibaba 完成适配,Dante Cloud 会马上进行更新升级。 因 Spring Boot 3 周边内容全部成熟和适配还需要一段时间,所以 2.7.X 将继续维护。想要体验最新的 3.0.0 版本,请检出 3.0.0 分支代码。 [3] 详细更新内容 重要更新 Spring Boot 版本升级至 3.0.0 Spring Cloud 版本升级至 2022.0.0 Spring Authorization Server 版本升级至 1.0.0 Spring Cloud Tencent 版本恒机制 1.8.2-2022.0.0 Spring Boot Admin 版本升级至 3.0.0-M6 Spring Doc 版本升级至 2.0.1 其它更新 [重构] 根据新版 Spring Authorization Server 代码结构及类命名,对 Spring Authorization Server 相关代码进行重构适配。 [重构] OAuth2 Application 实体类增加 authorization code time-to-live 字段。 [重构] OAuth2 Application 中 accessTokenTimeToLive、refreshTokenTimeToLive、authorizationCodeTimeToLive 属性的默认值,修改为与 Spring Authorization Server TokenSettings 一致。 [重构] 重构 Spring Authorization Server OAuth2 相关代码分包和模块结构,逻辑更内聚、职责更清晰、模块引用依赖更简洁 [重构] 使用 SpringSecurity 6 最新代码逻辑,重新实现接口鉴权。 [重构] 重构基于 Redis 的微服务 Session 共享配置代码,采用更合理的配置实现分布式微服务 Session 共享 [新增] 新增 Token Settings 授权码模式 Code 有效时间字段。 [新增] 在 Nacos 中增加 logback 配置,新增服务可外部化动态读取 logback.xml 配置模式。以便于更加灵活的进行日志输出配置。 [新增] 外部配置 logback.xml 中,增加 Skywalking 日志上报、ELK 日志中心日志收集、Skywalking TraceId 等支持。同时提供常规及 MDC 两种配置。 [新增] 在统一响应实体 Result 增加 TraceId 信息,在开启 Skywalking Tracing 的情况下,可在返回结果中,统一增加 TraceId,方便跟踪和调试。 [变更] 服务注册临时改为使用 zookeeper。 [变更] 数据库初始化脚本中的初始数据,与 Spring Authorization Server 0.4.0 最新代码适配 [变更] 默认 JDK 版本及 pom.xml 中 <java.version> 指定为变更为 JDK 17。 [变更] Docker 默认 JDK 基础镜像变更为 JDK 17。 [变更] spring.factories 全部替换为新版格式并启用 @AutoConfiguration。原有 ...AutoConfiguration形式命名配置类,变更为...Configuration形式命名。 [变更] 取消自定义登录页面中使用 Thymeleaf 内置 Reqeust、Session 对象,改用 Model 方式进行传递。 [变更] 适配新版本依赖注解引用及代码用法 [变更] 删除 Knife4j 相关依赖,后续版本不再提供 Knife4j API 支持。 [变更] 不再提供 docker-maven-plugin 支持,去除相关配置 [修复] 使用 Feign 调用接口时,上游接口 content_type 会传递至下游,错误的 content_type 导致下游接口调用出错问题。 [修复] 在 3.0.0 环境下,Thymeleaf 不再支持 Request、Session 对象调用,导致自定义 Spring Authorization Server 登录页面解析错误 [修复] OpenFeign 使用 OkHttp 做基础请求组件时,启动服务抛出对象无法注入错误问题。 [优化] 优化 git-commit-id 配置,变更为只在服务类型模块中生成相关信息,提升主工程编译速度 [优化] 优化 dependencies 及 pom 配置,去除冗余重复配置,降低 maven 内容的重复化配置。减少不必要的 Maven 插件配置,提升工程代码整体编译效率 [优化] 整体调整各类模块 pom build 配置,适当增加冗余重复配置,以支持 Spring Native 编译需要。规避对所有模块进行 Native 编译产生错误问题。 配置变更 javax 属性节点全部变更为 jakarta spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults 值修改为 true org.hibernate.dialect.PostgreSQL10Dialect 变更为 org.hibernate.dialect.PostgreSQLDialect Redis 相关配置全部移动到 data 属性节点下 依赖升级 [升级] Nacos 版本升级至 2.2.0 [升级] wxjava 版本升级至 4.4.6.B [升级] antisamy 版本升级至 1.7.2 [升级] redisson 版本升级至 3.19.0 [升级] minio 版本升级至 8.4.6 [升级] fastjson2 版本升级至 2.0.21 [升级] Hutool 版本升级至 5.8.10 [升级] tencentcloud-sdk-java-sms 版本升级至 3.1.650 [升级] dysmsapi20170525 版本升级至 2.0.23 [升级] alipay-sdk-java 版本升级至 4.35.7.ALL [升级] aliyun-java-sdk-core 版本升级至 4.6.3 [升级] qiniu-java-sdk 版本升级至 7.12.1 [升级] aliyun-java-sdk-green 版本升级至 3.6.6 [升级] postgresql 版本升级至 42.5.1 [升级] jackson 版本升级至 2.14.1 [升级] jasypt-spring-boot-starter 版本升级至 3.0.5

优秀的个人博客,低调大师

Spring Cloud Tencent 发布 Spring Boot 3.0 生态最新匹配版本!

作者 | 张乐、张皓天 Spring Framework 6.0 已于11月份上旬正式发布 GA 版本。Spring Boot 3.0 也于11月25日正式发布 GA 版本。那么 Spring Cloud 2022 它还远吗? 前言 Java 8 目前是国内主流生产环境 Java 版本之一。虽然近几年陆续发布了 Java 11、Java 17 官方 LTS 版本,但是 “你发任你发,我用Java8” 的声音反应了大部分开发者的心声。不过 Java 17 版本在性能上做了大量的优化特别是 ZGC 的发布,促进了国内不少企业升级到 Java 17。 Spring 在 Java 语言的作用不言而喻,Spring Framework 5.0 发布已至今五年,是时候需要一个大的版本来革新技术栈了。借着 Java 17 的东风我们认为 “Java 17 + Spring Framework 6.0 + Spring Boot 3.0 + Spring Cloud 2022” 组合一定会在不久的将来被大家所接受,成为主流技术栈。当然任何新技术大规模被认可、落地都会有一定的滞后性,技术的发展 “稳”字当头。 Spring Cloud Tencent 是基于腾讯开源的一站式微服务平台北极星(集服务注册发现、配置中心、服务限流熔断、服务路由于一身)实现的 Spring Cloud 微服务解决方案套件。真正做到 “All In One”、 开箱即用,极大的降低企业的微服务实践门槛。 无论北极星还是 Spring Cloud Tencent 当前都在积极的修复 Bug、完善用户体验、迭代新功能。所以 Spring Cloud Tencent 也第一时间适配了 Spring Cloud 2022 版本。此篇文章详细讲述了 Spring Cloud Tencent 从 2021 版本升级到 2022 版本的改动点,为尝鲜 2022 版本的广大开发者提供一些参考。 一、升级过程 1.1 升级安装 JDK 17 Oracle 官网下载 JDK 17 并安装。安装之后,本地修改 JAVA_HOME 环境变量,如下以我的 Mac 为例: #echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home #java -version java version "17.0.5" 2022-10-18 LTS Java(TM) SE Runtime Environment (build 17.0.5+9-LTS-191) Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, mixed mode, sharing) 安装好 JDK 17 之后,同时需要在 Idea 里设置项目的编译和运行环境为 SDK 17。 1.2 升级依赖版本 Spring Cloud Tencent 项目引用的 Parent Pom 是 spring-cloud-build,所以需要升级到最新版本。 <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-build</artifactId> <version>4.0.0-RC2</version> <relativePath/> </parent> 可以看到 Spring-cloud-build 4.0.0-RC2 版本里定义的 Java 和 Spring Boot 版本已是最新的 Java 17 和 Spring Boot 3.0 <properties> <java.version>17</java.version> <spring-boot.version>3.0.0-RC2</spring-boot.version> </properties> 普通项目一般不需要继承 spring-cloud-build ,而是通过 bom 的方式引入 Spring 全家桶。如果你的项目里定义了 Java、Spring Framework、Spring Boot、Spring Cloud 版本则需要同时升级。如下所示: <properties> <java.version>17</java.version> <spring.framework.version>6.0.1</spring.framework.version> <spring-boot.version>3.0.0</spring-boot.version> <spring.cloud.version>2022.0.0-RC2</spring.cloud.version> </properties> <dependencyManagement> <dependencies> <!-- Spring Framework Dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.framework.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Boot Dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud Dependencies --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 注意:Spring 非 GA 版本会先发布到 Spring 自己的 Maven 仓库,而不会发布到中央仓库。所以如果拉不到包 ,则需要在项目根 Pom 或者本地 ~/.m2/settings.xml 里配置 Spring Maven 仓库。 <repositories> <repository> <id>nexus-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> 在升级过程中,大概率会出现包冲突的情况,例如 SCT 在升级过程中发现日志依赖有问题导致 example 启动失败。最后排查到原因:SCT 自己定义了 logback版本为 1.2.11,但是升级 Spring Boot 3.0 里传递依赖的版本为 1.4.5,所以导致版本冲突。最后解决方案就是把 SCT 定义的版本去掉,只用传递依赖的版本。 Tips:解决版本冲突大概率会占用比较多的时间,升级过程需要有耐心 😭 1.3 修改不兼容代码 javax 包替换为 jakarta 包 这是Java17 最大变更点之一,代码所有 import javax 都要替换为 jakarta。编译不通过的地方直接通过 Idea 自动导入的方式变更即可。 spring-web 6.0 不兼容升级 SCT 在升级过程中发现 spring-web 包下有些 API 不兼容,例如 ClientHttpResponse.getStatusCode() 老版本返回 HttpStatus,新版本返回的是 HttpStatusCode,改动量很小。 AutoConfiguration 自动装配方式变更 在 Spring Boot 3.0 以前的版本,通过在 META-INF/spring.factories 文件中定义需要自动装配类,Spring Boot 在启动过程中就会执行装配 Bean,如下所示: org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.tencent.cloud.plugin.pushgateway.PolarisStatPushGatewayAutoConfiguration 但是在 Spring Boot 3.0 中,则是通过在 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件定义需要自动装配的类。所以迁移过程就是把org.springframework.boot.autoconfigure.EnableAutoConfiguration 下配置的类都放到新的文件中。 这里需要注意的是原来在 spring.factories 可以定义多种类型的自动装配例如: org.springframework.boot.autoconfigure.EnableAutoConfiguration org.springframework.cloud.bootstrap.BootstrapConfiguration org.springframework.context.ApplicationListener ... ... 只需要把 org.springframework.boot.autoconfigure.EnableAutoConfiguration 部分迁移到 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,其它部分还是放在 spring.factories 中无需迁移。 至此 SCT 2022 升级适配工作即已完成,可以看出升级工作量并不大。 1.4 升级总结 SCT 属于比较底层的基础框架组件,依赖的第三方库少,所以整体适配工作量较少。如果您的应用是上层业务应用依赖了大量的组件,例如: spring-security、spring-stream等。那升级的成本也会高很多。 下面是 github 网友 @herodotus-cloud 总结的升级关键点: 更换 JDK 17 后,少部分第三方依赖包版本选择和控制问题 新依赖包过时代码替换。大多数没问题,就怕遇到像 spring security 6 用法的变化 starter 自动配置注册格式不同导致的,大多数第三方依赖都倒在这里 最怕的就是核心机制的变化,比如说反射。好像一些反射在 JDK 17 会有问题 最大的问题就是基础设置组件升级不同步或者缓慢问题,比如依赖的某个 SDK 没有升级 SDK 17,如果传递依赖了就会导致编译问题。 如果还要考虑向下的兼容性,怕就难了 Spring 官方建议先升级到 Spring Boot 2.7 小版本,然后再升级到 Spring Boot 3.0 版本。通过小步升级的方式,可以更加的平滑。 二、尝鲜使用 Spring Cloud Tencent 2022.0 版本 Spring Cloud Tencent 1.8.1-2022.0.0-RC2 版本已发布。通过引入 SCT BOM 的方式即可引入,如下所示: <dependencyManagement> <dependencies> <dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-tencent-dependencies</artifactId> <version>1.8.1-2022.0.0-RC2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 在此解释一下 SCT 的版本号规则,版本号分为两段: ${SCT 版本}-${对应的 Spring Cloud 版本} SCT 版本号在各个 Spring Cloud 版本之间对齐,例如 1.8.1-Hoxton.SR12 和 1.8.1-2022.0.0-RC2 ,SCT 版本号都是 1.8.1,功能完全对齐,只是引用的 Spring Cloud 不同。1.8.1-Hoxton.SR12 对应的是 Spring Cloud Hoxton.SR12 版本,而 1.8.1-2022.0.0-RC2 对应的是2022.0.0-RC2 版本。版本号中引入 Spring Cloud 版本为了一眼就能识别 Spring Cloud 版本对应关系。开发者优先选择跟自己版本一致的 Spring Cloud 版本,再选择最新的 SCT 版本。 使用 SCT 各个子模块的功能,请参考 SCT Github Wiki 文档。 三、 呼吁 第三方基础组件的升级节奏会直接影响上层应用的升级,在此也呼吁第三方基础组件的维护者能够尽快跟进适配。为广大愿意尝鲜的开发者和企业提供便利。 四、欢迎共建 如果您对微服务、Spring Cloud 技术感兴趣,欢迎加入我们。您的一个建议、Issue、Pull Request 甚至只是一个小小的 Star 都是对 Spring Cloud Tencent 社区极大的支持。 SCT Github 地址:https://github.com/Tencent/spring-cloud-tencent 北极星官网:https://polarismesh.cn/

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册