Dante Cloud 3.3.2.0 发布,国内首个支持阻塞式和响应式融合的微服务


Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务。以「高质量代码、低安全漏洞」为核心,采用领域驱动模型(DDD)设计思想,完全基于 Spring 生态全域开源技术和 OAuth2.1 协议,支持智能电视、IoT等物联网设备认证,满足国家三级等保要求、支持接口国密数字信封加解密、防刷、高防XSS和SQL注入等一系列安全体系的多租户微服务解决方案

理念

Dante Cloud 一直秉承着“简洁、高效、包容、务实”的理念,使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,不断地深耕细作、去粗取精、用心打造。目标是构建一款`代码质量高、维护投入低、安全防护强`的,可以帮助用户快速跨越架构技术选型、技术研究探索阶段,降低传统项目中因安全漏洞、技术负债、低质代码等潜在隐患所产生的高维护投入,期望像项目名字寓意一样,在行业变革的时期承上启下,助力企业信息化建设和变革的产品。

[1] 本次更新内容

  • 主要更新
    • [升级] Spring Boot 版本升级至 3.3.2
    • [升级] Spring Cloud 版本升级至 2023.0.3
    • [升级] Spring Cloud Alibaba 版本升级至 2023.0.1.2
    • [升级] Nacos 版本升级至 2.4.0
    • [升级] Debezium 相关组件版本升级至 2.7
    • [新增] 新增基于 Aws SDK V2 版本的、响应式对象存储适配支持
    • [新增] 新增 QueryDsl 和 Blaze Persistence 支持,提升 JPA 查询语句编写便捷性
    • [新增] 新增第三方社会化账号登录手动绑定功能
    • [新增] 新增第三方社会化信息可根据服务配置自动生成功能
  • 其它更新
    • [发布] 基于 Postgresql 的、重新打包的 Nacos Server 2.4.0 已上传。
    • [新增] 新增社会化账号绑定接口定义。
    • [重构] 大幅调整 OSS 工程各模块定位、实现机制以及代码,重新定义统一调用定义及实现。
    • [重构] 重构和调整 OSS 各模块自动配置机制,自动适配阻塞式和响应式环境。
    • [重构] 重构 OSS 代码,修正包名、模块名不规范,与工程 groupId 不一致问题。
    • [重构] 恢复 Sentinel Dashboard 控制台懒加载配置
    • [修复] 修复升级至 Nacos 2.4.0 运行抛出 `java.lang.IllegalStateException: Could not initialize Logback Nacos logging from classpath:nacos-logback14.xml` 问题。fix: #IAECYY
    • [修复] 修复升级至 Nacos 2.4.0 运行抛出 `[*][variable] already has an associated action supplierl` 问题。fix: #IAECZ5
    • [修复] Sentinel 适配新版 sentinel-spring-webmvc-v6x-adapter
    • [修复] 修复图形验证码字体类型后缀编写错误
    • [修复] 修复外部登录接入错误代码没有配置导致 Access 相关模块自定义错误码不生效问题
    • [修复] 修复短信验证码登录相关配置开启条件错误问题。
    • [修复] 修复外部登录接入错误以及相关配置变更。
    • [修复] 修复在新版 Apache Maven 环境下,编译代码出现 audience-annotations 相关告警问题
    • [修复] 修复兼容 RSocket 和 WebSocket 的统一用户信息鉴定器类型校验错误,导致 Servlet WebSocket 环境下抛出转型错误问题。
    • [修复] 修复 Servlet WebSocket 模式下实时在线用户统计接口提示404问题。
    • [重构] 重构 autoconfigure 模块自动配置代码日志规范输出,以与 starter 相关模块输出日志进行区分。
    • [重构] 日志中心相关内容通用性较强,合并至 core-autoconfigure 增强其通用性以及不同环境的适配性。
    • [重构] 重构第三方社会化账号登录定义接口,去除无意义的 Exception 抛出标识
    • [重构] 合并社会化登录模块和代码相关模块合并至 assistant-module-access,减少不必要的代码模块拆分。重构相关代码修改为采用更符合 Spring 规范的用法。
    • [重构] 加密处理配置移动至 core-autoconfigure,改用自动配置方式提升加解密处理便捷性
    • [优化] 优化 Loki 日志记录补充 Label 形式的 traceId 和 spanId
    • [优化] 优化 Micrometer 轻量升级链路追踪和度量模块,Zipkin 和 Prometheus 解决不同场景下的链路追踪拆不同模块依赖问题
    • [升级] 更新 Antisamy XSS 防护配置
    • [升级] 加强 Docker Compose 服务启动顺序控制检查的准确性,以保证服务按照正确顺序启动
    • [升级] Kafka 镜像版本升级至 3.7.1
    • [升级] liberica 基础镜像版本升级至 21.0.4-9
    • [升级] minio docker 镜像版本升级至 RELEASE.2024-07-16T23-46-41Z
  • 依赖升级
    • [升级] aws-java-sdk-s3 版本升级至 1.12.762
    • [升级] software.amazon.awssdk 版本升级至 2.26.21
    • [升级] software.amazon.awssdk.crt 版本升级至 0.30.0
    • [升级] redisson 版本升级至 3.33.0
    • [升级] fastjson2 版升级至 2.0.52
    • [升级] weixin-java 版本升级至 4.6.3.B
    • [升级] alipay-sdk-java 版本升级至 4.39.134.ALL
    • [升级] antisamy 版本升级至 1.7.6
    • [升级] loki-logback-appender 版本升级至 1.5.2
    • [升级] hutool 版本升级至 6.0.0-M14
    • [升级] hutool 5.x 版本升级至 5.8.29
    • [升级] aliyun-java-sdk-core 版本升级至 4.7.0
    • [升级] quasar webjars 版本升级至 2.16.6
    • [升级] sweetalert2 webjars 版本升级至 11.12.2
    • [升级] checker-qual 版本升级至 3.45.0
    • [升级] mysql 版本升级至 9.0.0
  • 注意事项
    • Nacos 2.4.0 版本做了很多的改进和提升。但是当前版本还存在较多问题,已知问题已提交至:<https://github.com/alibaba/nacos/issues/12387>。所以,还请谨慎使用。

[2] 文档上新

在线文档新增:

  • Dante Cloud 阻塞式版本和响应式版本功能对比:https://www.herodotus.vip/support/comparison.html
  • Dante Cloud 响应式版本快速搭建说明:https://www.herodotus.vip/get-started/install/preview.html

[3] Dante Cloud 响应式版本特性

  • 全面采用 Java 21,默认开启虚拟线程,以改善阻塞操作的处理降低系统资源的消耗
  • 支持传统的 阻塞式 微服务与基于 ReactorWebFlux响应式 微服务同时运行在一套系统之中
  • 不强制使用 响应式 方式开发,可根据自身项目对资源吞吐量、资源消耗、特殊功能性能保障的需求,灵活的选择是采用 响应式 还是 阻塞式 来开发对应的服务。
  • 在保持 Dante Cloud 原有 Spring Authorization Server 深度扩展的各种特性的前提下,实现 响应式 服务的动态鉴权与现有体系的完全融合(无需在代码中使用 @PreAuthorize 写死权限,全部通过后台动态管理)
  • 向“响应式编程”转变,基于 Reactor 重构大量核心代码,进一步提升本系统代码质量和运行效能
  • 重新架构所有核心组件模块,进一步降低各模块的耦合性,减少第三方组件依赖深度,简化各模块使用的复杂度,使用更贴近 Spring Boot 生态官方写法,提升模块组件的可插拔性以及 响应式阻塞式 不同环境下自动配置的适配能力
  • 实现 响应式阻塞式 不同类型服务,Session 共享体系以及自定义 Session 体系的完美融合(谁说微服务就一定用不到 Session :))。
  • 新增 GRPC 服务间调用和通信方式,系统核心服务间调用支持 OpenFeignGRPC 两种方式,可通过修改配置实现两种方式的切换。
  • 基于 RSocket 全面重写 WebSocket 消息系统,实现 WebSocket响应式 改造以及 RSocket 与 Spring Security 体系的全面集成。支持多实例、跨服务的私信和广播
  • 新增 OAuth2 独立客户端,可用于客户端动态注册以及授权码模式
  • 新增基于 Loki + Grafana 生态的轻量级日志中心和链路追踪解决方案,使用 OSS 作为数据存储,极大地降低资源需求,可作为原有 Skywalking 和 ELK 重量级体系的备选方案,根据实际需要切换。
  • 开放纯手写动态表单功能。可实现BPMN、动态表单、Camunda 流程引擎的串联,实现工作流程运转(目前仅支持简单工作流)
  • 开放包含自定义属性面板的 BPMN 在线设计器功能。
  • 开放物联网设备认证和管理模块,支持基于 Emqx 的物联网设备通信和管理。
  • 开放阿里云内容审核、百度 OCR、环信、Emqx、天眼查、Nacos、PolarisMash等第三方 OpenApi 封装模块
  • 前端工程支持 Docker 运行,相关参数可通过配置环境变量修改。已上传至 Docker Hub,可以直接下载运行。

[4] Dante Cloud 阻塞式版本特性

1. 核心基础依赖便捷切换

  • 新增 Spring Cloud TencentSpring Cloud 原生微服务全家桶等两种基础设施支持。
  • 新增 Spring Cloud AlibabaSpring Cloud TencentSpring Cloud 原生微服务全家桶三种基础设值切换能力,可以以相对便捷的方式切换使用 Alibaba、Tencent、Spring 等基础设施环境。可根据自身实际需求选择,不再局限于只能在某一种基础设施环境中运行。

2. Spring Authorization Server 全特性支持

  • 基于 Spring Authorization ServerSpring 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 CodeResource Ownership PasswordSocial Credentials 几种模式,全面融合 IdTokenOpaque TokenJWT Token 与现有权限体系,同时提供 IdToken 和 自定义 Token 扩展两种无须二次请求的用户信息传递方式,减少用户信息的频繁请求。
  • 自定义 Spring Authorization Server 授权码模式登录认证页面和授权确认页面,授权码模式登录采用数据加密传输。支持多种验证码类型,暂不支持行为验证码。
  • 新增基于 Spring Authorization Server 的、支持智能电视、IoT等物联网设备认证模式
  • 无须在代码中配置 Spring Security 权限注解以及权限方法,即可实现接口鉴权以及权限的动态修改。采用分布式鉴权方案,规避 Gateway 统一鉴权的压力以及重复鉴权问题
  • OAuth2 UserDetails 核心数据支持直连数据库获取和 Feign 远程调用两种模式。OAuth2 直连数据库模式性能更优,Feign 访问远程调用可扩展性更强。可通过配置动态修改采用策略方式。

3. 全体系化应用特性集成

  • 微服务架构全体系 Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有
  • 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封技术的秘钥动态生成加密传输。利用“一人一码机制”,实现前后端数据进行动态加密传输与。Spring Authorization Server OAuth 2.1 授权模式深度融合,构建统一体系的数据传输加密。
  • 全面整合 @PreAuthorize 注解权限与 URL 权限,通过后端动态配置,无须在代码中配置 Spring Security 权限注解以及权限方法,可实现接口鉴权以及权限的统一管理和动态修改
  • 融合 Spring Cloud Stream 和 WebSocket,以优雅的方式实现 WebSocket 服务多实例环境下,点对点、广播消息跨实例推送,在线用户实时统计,完美支持 WebSocket 集群化应用。
  • 借鉴 JPA 标准化设计思想,提取和抽象 OSS 标准化操作,形成统一的 Java OSS API 规范。封装可操作任意厂商的、统一的 REST API,构建定义统一、动态实现的应用模式(类似于 Hibernate 是 JPA 的一种实现,Hibernate 以 Dialect 方式支持不同的数据库一样),在不修改代码的情况下通过修改配置实现 OSS 的无缝切换和迁移
  • 自研基于 JetCache 分布式两级缓存,完美实现 JPA Hibernate 二级缓存,支持各类查询数据缓存以及 JPA @ManyToMany@ManyToOne等关联查询。完美解决 Spring Cache 仅使用本地缓存、创建 Key 繁琐和分页数据无法更新的问题。支持多实例服务本地缓存和远程缓存数据同步,同时支持 Mybatis Plus 二级缓存
  • 平台统一错误处理,支持自定义错误码体系,有效集成 OAuth2Spring Validation 等多方错误体系并有机整合 HTTP 状态码。采用 Customizer 模式,采用错误码自动计算和创建模式,支持代码模块级错误码灵活定义扩展。响应结果更加多样灵活,反馈结果也更加人性化,便于理解和定位问题。
  • 全体系 OkHttp 、HttpClient 统一化集成,实现 OkHttp 、HttpClient 与 RestTemplate 、Openfeign 一体化融合。统一使用 Feign 配置参数,对 OkHttp 、HttpClient 进行参数设定,可策略化选择设置使用 OkHttp 或 HttpClient 作为 RestTemplate 、Openfeign 统一的基础 HttpClient

4. 采用 pnpm monorepo 重构前端

  • 未使用任何流行开源模版,使用全新技术栈,完全纯"手写"全新前端工程。
  • 借鉴参考流行开源版本的使用和设计,新版前端界面风格和操作习惯尽量与当前流行方式统一。
  • 充份使用 Typescript 语言特性,解决大量类型校验问题,尽可能规避 "any" 式的 Typescript 编程语言使用方式。
  • 充份使用 Composition Api 和 Hooks 等 Vue3 框架新版特性进行代码编写。
  • 充份利用 Component、Hooks 以及 Typescript 面向对象等特性,抽取通用组件和代码,尽可能降低工程重复代码。
  • 对较多 Quasar 基础组件和应用功能组件进行封装,以方便代码的统一修改维护和开发使用。
  • 对生产模式下,对基于 Vite3 的工程打包进行深度性能优化。
  • 提供以 docker-compose 方式,对工程生产代码进行容器化打包和部署。
  • 该版本基于 pnpm,采用 monorepo 模式对前端工程进行重构。构建 monorepo 版本前端,是为扩展更多功能、增加应用级功能做铺垫
  • 抽取 utils、components、apis、bpmn-designer 等相关代码,形成共享模块。
  • 共享模块已进行优化配置,可编译成独立的组件,单独以组件形式进行发布。
  • 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。

欢迎 Star 一波来支持我们!

Gitee:https://gitee.com/dromara/dante-cloud 

Github:https://github.com/dromara/dante-cloud


相關推薦

2024-07-03

count migration)问题。 [优化] 增加基于 Github Action 的自动发布配置 [升级] minio docker 镜像版本升级至 RELEASE.2024-06-29T01-20-47Z 【依赖更新】 [升级] springdoc 版本升级至 2.6.0 [升级] aws-java-sdk-s3 版本升级至 1.12.754 [升级] softw

2024-08-23

于 Postgresql 作为存储的自主封装 Nacos 镜像升级至 2.4.1 并发布至 Docker Hub 和 Quay IO 【其它更新】 [新增] 新增物联网相关页面初始化数据 [新增] 新增物模型 TSL 核心实体及 JSON 解析 [新增] 新增物模型数据接收并转换为 App

2024-11-01

L注入等一系列安全体系的多租户微服务解决方案。 [一] 发布背景 Dante Cloud 一直秉承着“简洁、高效、包容、务实”的理念,使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,不断地深耕细作、去粗取精、用心

2024-03-14

master Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 主要发布分支 可使用,但 Spring Cloud Alibaba、Tencent 等生态组件尚未发布正式版本 develop Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 Development 分支 新功能、ISSUE 均以此分支

2024-04-10

master Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 主要发布分支 可使用,但 Spring Cloud Alibaba、Tencent 等生态组件尚未发布正式版本 develop Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 Development 分支 新功能、ISSUE 均以此分支

2023-11-12

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。

2024-04-26

master Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 主要发布分支 可使用,但 Spring Cloud Alibaba、Tencent 等生态组件尚未发布正式版本 develop Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 Development 分支 新功能、ISSUE 均以此分支

2024-01-18

nitialize class org.dromara.hutool.crypto.bc.SmUtil 问题 fix: #I8WPZZ [发布] 基于 Sentinel 1.8.7 扩展改造的 Dante Sentinel Dashboard Docker 镜像已发布并上传至 Docker Hub 【其它更新】 [重构] 提取基础核心定义代码模块,清晰依赖和模块定位,

2023-01-18

0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring 社区的发展,让更多质量更好、性能更优的新特性服务于实际的开发工作,Dante Cloud 也

2024-02-22

master Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 主要发布分支 可使用,但 Spring Cloud Alibaba、Tencent 等生态并为完全适配,部分功能受限 develop Spring Boot 3.2 和 Spring Cloud 2023.0.0 JDK 17 Development 分支 新功能、ISSUE 均以

2023-09-09

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。 [3]界面预览 Dromara 开源社区 一、社区愿景

2022-11-13

Dante Cloud 是一款企业级微服务架构和服务能力开发平台。首个全面拥抱 Spring Authorization Server 的版本,基于Spring Boot 2.7.5、Spring Cloud 2021.0.5、Spring Cloud Alibaba 2021.0.4.0、 Spring Authorization Server 0.3.1、Nacos 2.1.2 等最新版本开发的多租户

2023-10-30

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。

2022-10-08

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。 [重构] 重构现有前端工程 TabView 相关代码和实现逻