Skip to content

Commit

Permalink
update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
herodotus-ecosystem committed Jun 2, 2024
1 parent ef96bc5 commit 9c5f091
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 117 deletions.
147 changes: 30 additions & 117 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,9 @@
<a href="https://gitee.com/dromara/dante-cloud"><img src="https://gitee.com/dromara/dante-cloud/badge/fork.svg?theme=dark" alt="Gitee fork"></a>
</p>
<p align="center">
<a href="https://github.com/herodotus-cloud/dante-cloud">Github 仓库</a> &nbsp; | &nbsp;
<a href="https://github.com/dromara/dante-cloud">Github 仓库</a> &nbsp; | &nbsp;
<a href="https://gitee.com/dromara/dante-cloud">Gitee 仓库</a> &nbsp; | &nbsp;
<a href="https://gitee.com/herodotus/dante-engine">核心组件仓库</a> &nbsp; | &nbsp;
<a href="https://www.herodotus.cn">文档</a>
<a href="https://www.herodotus.vip">文档</a>
</p>

<h1 align="center"> 如果您觉得有帮助,请点右上角 "Star" 支持一下,谢谢!</h1>
Expand All @@ -47,85 +46,38 @@
- 平台架构使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,是帮助快速跨越架构技术选型、研究探索阶段的利器。
- 代码简洁规范、结构合理清晰,是新技术开发应用的典型的、综合性案例,助力开发人员对新兴技术的学习和掌握。

## Dante Cloud 特性

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

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

### 2. `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 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 二级缓存
- 平台统一错误处理,支持自定义错误码体系,有效集成 `OAuth2``Spring 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 等相关代码,形成共享模块。
- 共享模块已进行优化配置,可编译成独立的组件,单独以组件形式进行发布。
- 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。

## 说明

开发新手在群内提问或新开 Issue 提问前,请先阅读 [【提问的智慧】](https://www.herodotus.cn/others/question/),并确保认真、详细地查阅过本项目 [【在线文档】](https://www.herodotus.cn),特别是【常见问题】章节。避免浪费大家的宝贵时间;
## Dante Cloud 响应式版本特性

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

## [1]、开源协议

> 因近期出现修改包名、删除作者版权信息、二次开源的行为,为保护作者权益,Dante Cloud 自 3.3.X 版本开始,开源协议修改为 AGPL 3.0。点击[【了解详情】](https://www.herodotus.vip/support/authorization.html)
![开源协议](./readme/copyright/agplv3-155x51.png)

## [2]、总体架构

![输入图片说明](./readme/architecture.jpg)

> 部分功能演示,正在逐步添加
## [3]、功能讲解

### (1) 方法级动态权限

![输入图片说明](./readme/preview/oauth2expression.gif)

### (2) Minio 控制台使用 Dante Cloud 登录认证

![输入图片说明](./readme/preview/minio-login.gif)

### (3) 服务调用链监控

![输入图片说明](./readme/preview/skywalking.gif)

## [3]、功能介绍

<a href="https://www.herodotus.cn">详情见在线文档</a>
<a href="https://www.herodotus.vip>详情见在线文档</a>

## [4]、技术栈和版本说明

Expand Down Expand Up @@ -228,50 +180,11 @@ dante-cloud
## [7]、项目地址

- 后端主工程地址:[https://gitee.com/dromara/dante-cloud](https://gitee.com/dromara/dante-cloud)
- 后端核心组件库地址:[https://gitee.com/herodotus/dante-engine](https://gitee.com/herodotus/dante-engine)
- 后端单体版示例工程地址:[https://gitee.com/herodotus/dante-cloud-athena](https://gitee.com/herodotus/dante-cloud-athena)
- 前端工程地址:[https://gitee.com/herodotus/dante-cloud-ui](https://gitee.com/herodotus/dante-cloud-ui)

## [8]、技术解析

**Dante Cloud 技术内幕高阶文档专栏(Cookbook)**

> 因目前所使用的阅读产品支持度有限,想要购买阅读全文请点击对应文章链接,在电脑浏览器中打开后进行购买。购买后即可在小程序阅读全文,否则小程序端仅能阅读试读章节。
| 序号 | 文章标题 | 付费 | 说明 | 扫码阅读 |
|:--:|-------------------------------------------------------------------------------------|:--------:|----------------------------------------------------------------------------------|----------------------------------------------------------------|
| 1 | [Dante Cloud 及相关知识学习方法和学习路径的建议V2](https://www.foxitsoftware.cn/bhds/read/wb4mkg) | 免费 | | ![Dante Cloud 及相关知识学习方法和学习路径的建议V2](./readme/cookbook/0006.png) |
| 2 | [OAuth 2 中的 Scope 与 Role 深度解析](https://www.foxitsoftware.cn/bhds/payRead/3nxj3r/) | 付费,有试读章节 | 全网独家,深度解析 OAuth2 协议中和 Spring Security 生态各组件中 Scope 和 Role 概念与原理,以及在实战中的应用 | ![OAuth 2 中的 Scope 与 Role 深度解析](./readme/cookbook/0002.png) |
| 3 | [Spring Boot 3 之自动配置与注入顺序控制](https://www.foxitsoftware.cn/bhds/payRead/1vzfy1/) | 付费,有试读章节 | Spring 生态重要知识点,掌握步入微服务的关键开关 | ![Spring Boot 3 之自动配置与注入顺序控制](./readme/cookbook/0003.png) |
| 4 | [Spring Cloud 之 Session 共享及一致性处理](https://www.foxitsoftware.cn/bhds/payRead/pmq4wy) | 付费,有试读章节 | 深入浅出剖析微服务架构 Session 共享技术难点 | ![Spring Cloud 之 Session 共享及一致性处理](./readme/cookbook/0004.png) |
| 5 | [OAuth 2 中的鉴权和动态接口鉴权](https://www.foxitsoftware.cn/bhds/payRead/uxq6fi) | 付费,有试读章节 | 带您跟随 Dante Cloud 源代码,由浅入深全面掌握 Spring Security 5 & 6 以及基于 OAuth2 的微服务动态接口鉴权的原理与实现 | ![OAuth 2 中的鉴权和动态接口鉴权](./readme/cookbook/0005.png) |
| 6 | [Spring Boot 3 之 Rest 接口传参方式详解](https://www.foxitsoftware.cn/bhds/payRead/kcsegy) | 付费,有试读章节 | 一文让你彻底掌握 Spring Boot Rest 各种传参方式和方法的”正确打开方式“ | ![Spring Boot 3 之 Rest 接口传参方式详解](./readme/cookbook/0007.png) |

## [9]、安全测试

Dante Cloud 已通过由第三方进行的软件出厂安全测试。详情参见:[安全测试](https://www.herodotus.cn/guide/get-start/project-introduction.html#%E4%BA%94-%E5%AE%89%E5%85%A8%E6%B5%8B%E8%AF%95)

## [10]、参与贡献

1. 在 Gitee fork 项目到自己的 repo
2. 把 fork 过去的项目也就是你的项目 clone 到你的本地
3. 修改代码(记得一定要修改 develop 分支)
4. commit 代码,push 到自己的库(develop 分支)
5. 登录 Gitee 在你首页可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。
6. 等待维护者合并

## [11]、如何升级

尽量不修改 Dante Cloud 以外的项目源码,如 Dante Engine、Dante OSS。如果修改了,请 Pull Requests 上来,否则代码与官方不同步,可能会将对你的日后升级增加难度。

每个版本升级,我们都会附带详细更新日志:https://www.herodotus.cn/others/log/changelog.html。 在这里,你可以看到 Dante Cloud 新增哪些新功能和改进。
针对有较大变化、差异的版本,我们都会负载详细的升级指南:https://www.herodotus.cn/guide/get-start/notices.html。 在这里,你可以看到 Dante Cloud 不同版本对应升级方法。

## [12]、交流反馈

- 详见[【在线文档】](https://www.herodotus.cn) 交流反馈章节。
- 前端工程地址:仅支持 Docker 运行,购买授权后开放私库
- 核心组件地址:购买授权后开放私库

## [13]、界面预览
## [8]、界面预览

<table>
<tr>
Expand Down Expand Up @@ -306,13 +219,13 @@ Dante Cloud 已通过由第三方进行的软件出厂安全测试。详情参
</tr>
</table>

## [14]、谁在使用 Dante Cloud
## [9]、谁在使用 Dante Cloud

| 序号 | 名称 | 官网 |
|----|------|-------------------------|
| 1 | 轻喜到家 | <https://qxdaojia.com/> |

## [15]、鸣谢
## [10]、鸣谢

### 赞助人列表

Expand Down
Binary file added readme/copyright/agplv3-155x51.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9c5f091

Please sign in to comment.