Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务。以「高质量代码、低安全漏洞」为核心,采用领域驱动模型(DDD)设计思想,完全基于 Spring 生态全域开源技术和 OAuth2.1 协议,支持智能电视、IoT等物联网设备认证,满足国家三级等保要求、支持接口国密数字信封加解密、防刷、高防XSS和SQL注入等一系列安全体系的多租户微服务解决方案。
[一] 发布背景
Dante Cloud 一直秉承着“简洁、高效、包容、务实”的理念,使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,不断地深耕细作、去粗取精、用心打造。目标是构建一款代码质量高、维护投入低、安全防护强
的,可以帮助用户快速跨越架构技术选型、技术研究探索阶段,降低传统项目中因安全漏洞、技术负债、低质代码等潜在隐患所产生的高维护投入,期望像项目名字寓意一样,在行业变革的时期承上启下,助力企业信息化建设和变革的产品。
[二] 设计答疑
1. 为什么不做“纯血”响应式
响应式固然有其优势所在,但是使用响应式也不得面对一些现实问题:
- 要做纯血响应式,首先要有生态的保证。目前响应式的接受度还并不是很高,很多组件还都不支持响应式。除非有精力将所有用到的不支持的组件改写一遍,否则很难做到纯血,特别是对于微服务系统来说。
- 绝大多数应用都是需要使用数据库的,Java 领域现有的 orm 组件,要么不支持响应式(比如 JPA)、要么支持的不是特别好(比如 Hibernate)、要么需要自己编写的内容太多(比如 R2DBC),所以从投入产出比的角度说目前在数据层面做响应式并不“划算”
所以,还是要具体看应用系统的类型,在条件不具备的情况下没有必要做到纯血响应式
。
2. 响应式可以带来哪些好处
响应式
对阻塞式
的好处,网上有大把的文章介绍,具体就不赘述了。对于实际应用中比较明显的优势:
响应式
资源的利用效能更高,对于高资源消耗的功能,响应式
的优势更突出- 微服务系统往往会需要集成更多内容,特别在数据层面,可能会存在同时使用多种类型数据存储以及数据的流转和迁移,常规事件驱动与响应式的“流”式思维比传统阻塞式更为契合。
- 响应式可以与事件驱动更好的配合。在 Spring 生态中在多个方面都大量使用了事件驱动,而响应式的核心设计思想也与事件驱动殊途同归。
正因为 Dante Cloud 用了很多 Spring Integration 的内容,传统阻塞式方式越用越别扭,才越来越觉得有必要做响应式支持。如果有时间可以好好看看 Spring Integration,也许会为你打开一个新的世界。
3. 学习响应式编程有哪些难点
- 如果基于 Reactor 学习响应式编程,难点和突破点就在于
Flux
和Mono
两个类。把这两个类的方法用透、弄明白,基本上就可以消除所有开发阻碍了。 - 响应式编程最大的难点就是编程思维的转换,因为习惯了阻塞式编程,一时会很难适应
响应式
的流
式开发思维
世上无难事只怕有心人
[三] 更新内容
- 主要更新
- [升级] Spring Boot 版本升级至 3.3.5
- [升级] Spring Authorization Server 版本升级至 1.3.3
- [升级] Spring Boot Admin 版本升级至 3.3.4
- [升级] Debezium 版本升级至 3.0
- [升级] Camunda 版本升级至 7.22.0
- [升级] Nacos 版本升级至 2.4.3
- [重构] 开源版本工程代码包名由 cn.herodotus 修改为 org.dromara,与社区项目保持一致
- [重构] 单体版系统合并至微服务版本工程中。可以在同一工程启动单体版本或者微服务版。解决原有模式下,需要单独编译微服务版,再在另一个工程中启动单体版。提升开发和使用的便捷性。
- [新增] 新增服务间文件上传和下载传输机制,支持 OpenFeign 和 Grpc 两种模式,通过热插拔模式切换。
- [新增] 新增 OSS 文件操作 GRPC 定义模块
- [新增] 新增服务本地常用文件管理机制
- [新增] 新增跨模块跨服务认证开启或关闭控制单元
- [新增] 新增客户端动态注册业务信息同步创建功能
- [新增] Mqtt 用户账号管理功能
- [新增] 新增 NoSQL 相关组件自动配置 Starter。
- [新增] 新增 Influxdb 列式存储和行式存储两种存储设备上报数据支持。
- 其它更新
- [修复] 重新构建支持 Postgresql 的 Nacos Server 镜像。修复创建命名空间失败问题。
- [修复] 修复数据加密策略配置未生效问题
- [修复] 修复 Kafka Docker Compose 配置错误,导致 Kafka 镜像启动抛错问题
- [修复] 修复前端 Vite CSS 样式配置不兼容,导致页面启动抛错问题。
- [修复] 修复微服务环境下,分布式事件使用错误导致字典聚合数据汇总异常问题
- [修复] 修复使用 AWS SDK V2 创建的预签名地址中,仍旧使用 AWS 默认服务地址不会定位至自定义主机问题
- [修复] 修复自动配置类引入日志标识 Class 错误问题。
- [修复] grpc 编译出现 error: emptyList() is not public in LazyStringArrayList; cannot be accessed from outside package com.google.protobuf.LazyStringArrayList.emptyList() 问题。fix: #IAWQ4C
- [修复] 修复 Docker Compose 镜像地址配置错误问题。fix: #IAXUFB
- [修复] 修复 Influxdb2 默认配置与系统提供 Docker Compose 默认配置不一致,导致 Influxdb 测试代码部分通过问题。
- [修复] 修复前端
Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0
告警错误 - [重构] 重构 AWS SDK V2 高阶 OSS 操作代码,增加高阶操作单元测试。
- [重构] 服务内文件基本操作变更为使用 NIO 操作
- [重构] Mybatis Plus 修改为 Bom 引入,同时适配最新版本 Mybatis Plus
- [重构] 重构部分 OAuth2 核心代码,提升代码模块的内聚性降低代码耦合
- [重构] 重构物联网设备动态开启和关闭认证逻辑,简化和去除原有采用的多重事件跳转方式。
- [重构] 重构服务本地文件管理定义以及证书生成逻辑代码
- [优化] 优化 OSS 模型基础操作类命名,以便更容易的区分代码用途。
- [优化] 优化 OSS 模块代码,池化 S3Presigner 对象管理提升效能。
- [优化] 优化 OSS 模块代码,提取独立的预签名操作 Service
- [优化] 对照阿里云物联网的使用完善产品和设备管理的接口实现逻辑。
- [优化] 优化 OIDC 客户端动态注册逻辑,更好的兼容物联网设备管理需求。
- [优化] 去除重复定义的 ApplicationEvent 消息通道定义,改用统一定义消息通道
- [优化] 优化 Emqx 客户端状态检测策略化配置方式
- [优化] 合并部分系统配置参数类定义,增强配置参数划分和归类的合理性
- [优化] 删除无用重复的常量定义
- [优化] 提取通用 Spring ParameterizedTypeReference 定义
- [优化] 自定义函数式接口 ListConverter 代码逻辑,去除 IDE 空值警告
- [升级] Liberica JDK 基础镜像版本分别升级至 17.0.13-12 和 21.0.5-11
- [升级] minio docker 镜像版本升级至 RELEASE.2024-10-13T13-34-11Z
- [升级] loki docker 镜像版本升级至 3.2.0
- [升级] promtail docker 镜像版本升级至 3.2.0
- [升级] grafana docker 镜像版本升级至 11.2.2
- [升级] zipkin docker 镜像版本升级至 3.4.2
- [升级] emqx 镜像版本升级至 5.8.0
- 依赖更新
- [升级] aws-java-sdk-s3 版本升级至 1.12.777
- [升级] software.amazon.awssdk 版本升级至 2.28.29
- [升级] software.amazon.awssdk.crt 版本升级至 0.31.3
- [升级] alipay-sdk-java 版本升级至 4.39.234.ALL
- [升级] mysql 版本升级至 9.1.0
- [升级] mybatis plus 版本升级至 3.5.9
- [升级] sqlite-jdbc 版本升级至 3.47.0.0
- [升级] quasar webjars 版本升级至 2.17.1
- [升级] sweetalert2 webjars 版本升级至 11.14.4
- [升级] grpc 版本升级至 1.68.0
- [升级] protobuf 版本升级至 3.25.5
- [升级] redisson 版本升级至 3.37.0
- [升级] hutool 版本升级至 6.0.0-M17
- [升级] checker-qual 版本升级至 3.48.1
- [升级] nacos-client 版本升级至 2.4.3
- [升级] opengauss-jdbc 版本升级至 6.0.0-og
- [升级] vue webjars 版本升级至 3.5.12
[四] 系统文档
为了更好的帮助大家理解学习 Dante Cloud,新增文档站点 https://www.herodotus.vip 。 该站点目前包含矫正和重新梳理后的系统部署相关内容,后续计划根据系统涉及的详细知识点和模块陆续补充对应设计实现和认知理解相关文章。 原有站点如无特殊原因,仍旧会保留。
欢迎 Star 一波来支持我们!
Gitee:https://gitee.com/dromara/dante-cloud Github:https://github.com/dromara/dante-cloud