Dante Cloud企业级技术中台微服务架构

联合创作 · 2023-09-28 04:54

Dante Cloud 是一款企业级微服务架构和服务能力开发平台。基于 Spring Boot 2.7.2、Spring Cloud 2021.0.3、Spring Cloud Alibaba 2021.0.1.0、Spring Authorization Server 0.3.1、Nacos 2.1.0 等最新版本开发,遵循 SpringBoot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能,代码简洁,架构清晰,非常适合学习和企业作为基础框架使用。

平台定位

  • 构建成熟的、完善的、全面的,基于 OAuth2.1 的、前后端分离的微服务架构解决方案。
  • 面向企业级应用和互联网应用设计开发,既兼顾传统项目的微服务化,又满足互联网应用开发建设、快速迭代的使用需求。
  • 平台架构使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,是帮助快速跨越架构技术选型、研究探索阶段的利器。
  • 代码简洁规范、结构合理清晰,是新技术开发应用的典型的、综合性案例,助力开发人员对新兴技术的学习和掌握。

[1]、总体架构

详细功能说明

(1) 统一安全认证中心

功能 说明
OAuth2.0 安全认证 支持OAuth2.0授权码模式、隐式授权码模式(简单模式)、密码模式和客户端模式四种登录模式
JWT Token令牌 采用JWT对OAuth2 Token进行加密
自定义OAuth2页面 自定义OAuth2 login、confirm、error页面,提升系统使用用户体验。可结合自身需求进行修改。
OAuth2 登录验证码 OAuth2登录增加验证码保护,支持gif、中文、算数等类型,可通过配置进行修改以及是否显示验证码控制
OAuth2登录数据加密传输 基于AES对OAuth2登录数据进行动态加密传输,可通过配置对表单参数名进行动态配置,提升系统安全性
RBAC权限管理 采用自研的RBAC权限体系,支持OAuth2 Scope权限管理
User、Client数据策略访问 支持OAuth2 UserDetails、ClientDetails数据直连数据库和Feign两种数据获取策略模式,OAuth2直连数据库性能更优,Feign访问数据服务独立可动态扩展。可通过配置动态修改具体采用哪种策略
手机短信验证码注册和登录 支持通过手机验证码登录认证,与平台为统一体系,统一返回OAuth2 Token,支持服务接口鉴权。
第三方系统社交注册和登录 基于JustAuth实现第三方系统社交登录认证,,与平台为统一体系,统一返回OAuth2 Token,支持服务接口鉴权,。所有JustAuth支持的第三方系统均支持。
微信小程序注册和登录 支持微信小程序登录认证,与平台为统一体系,统一返回OAuth2 Token,支持服务接口鉴权。
其它注册和登录 采用策略模式对外部登录和注册进行支持,目前未支持的登录,可参考标准,动态扩展,即可支持。
权限鉴权 基于RBAC模型,以角色为核心,无须配置Security权限注解,支持URL粒度的鉴权和用户权限的动态配置,

(2) 统一服务访问网关

功能 说明
网关动态路由 基于Gateway和Nacos实现服务网关动态路由,无须增加任何配置,即可支持服务的发现与路由
网关服务鉴权 服务网关集成部分权限认证功能,提升系统安全性,降低平台压力
网关服务限流 基于Sentinel实现服务的限流,支持基于Gateway Filter的自定义限流
动态文档聚合 网关动态Swagger文档聚合,使用Swagger 3.0,支持Knife4j增强。不同环境访问控制
统一跨域处理 基于Gateway实现统一跨域处理
统一错误处理 平台统一错误处理,支持自定义错误码体系
自定义动态路由 支持基于DB的动态路由管理与路由规则配置

(3) 微服务架构支撑

功能 说明
服务注册发现 基于Nacos实现服务的注册与发现。
服务负载均衡 Spring Cloud Netflix停止维护,使用Spring Cloud Loadbalancer全面替换Ribbon,
服务熔断降级 整合OpenFeign和Sentinel,从熔断降级、系统负载保护、热点防护等多个维度来保障微服务的稳定性
统一配置中心 基于Nacos搭建的统一配置中心,使用MySQL8,支持配置文件自动导入和关键信息加密,可根据文件夹名称自动分组配置。
统一日志中心 采用TCP直连的方式采集和发送日志,集成Skywalking TraceID实现日志聚合及ELK日志分析。通过@EnableXXX注解开启或关闭日志采集功能。
分布任务调度 极简集成xxl-job,支持分布式任务调度功能
分布事务处理 集成Seata,支持分布式事务,无代码侵入,灵活便捷
分布对象存储 支持Minio分布式对象存储。同时,集成阿里云OSS,可通过@EnableXXX注解开启或关闭功能。

(4) 微服务运行监控

功能 说明
服务调用链监控 集成Skywalking进行服务调用链的监控,调用链监控深度可延伸至Undertow、数据库、Redis
应用吞吐量监控 集成Skywalking进行应用吞吐量监控
熔断、降级监控 集成Sentinel进行服务的熔断、降级监控
微服务状态监控 集成Spring Boot Admin进行服务运行状态的监控

(5) 数据自动化处理

功能 说明
数据模型初始化 RBAC、OAuth2部分核心表、Camunda数据表,在初始部署过程中为自动化创建
核心应用数据初始化 RBAC、OAuth2等核心数据,在初始部署过程中为自动化导入
URL权限数据动态汇总 自动扫描URL接口作为权限汇总存入系统,根据URL相关信息生成唯一ID,多次导入数据不会重复。可通过配置动态开启或修改扫描内容
Yml配置自动导入 服务所需使用的配置文件,可自动根据文件夹进行分组并导入到Nacos中。

(6) 服务开发支撑

功能 说明
通用CRUD封装 各种类型的代码生成器较多,结合实际应用使用效果来看,代码生成器在实际开发中使用频率低于理想预期。因此,没有考虑提供代码生成器,而是对常规的CRUD进行了多层次的封装,使定制化服务的开发更加便捷。
自研两级缓存封装 使用JetCache实现本地、Redis两级缓存。结合CRUD操作,自研数据缓存的封装,支持分页及简单条件查询缓存数据的动态更新,规避Spring Cache等缓存创建Key繁琐和分页数据无法更新的问题
多类型数据库支持 默认采用postgresql数据库,支持MySQL、Oracle、H2等多种关系型数据库,无须修改代码可动态切换。数据层同时支持Spring Data Jpa和Mybatis
多消息队列支持 适配RabbitMQ和Kafka,默认使用Kafka,支持消息总线(Spring Cloud Bus)
多种服务调用方式 默认采用OpenFeign进行服务间调用,支持RestTemplate和OkHttps
共享式多环境切换 共享式、统一化多环境配置模式,Yml、Docker均采用此方式配置,避免类似的服务配置、Dockerfile配置导出复制和修改的问题
多团队开发管理 支持多团队开发,可针对各个团队开发服务,进行单独的授权配置。
注解模型模块模式 除必要依赖逻辑以及强注入顺序要求的模块采用Spring SPI(spring.factories)机制外,其它功能模块均采用@EnableXXX注解编程模型,可选择性进行控制是否开启对应模块,减少不必要的依赖注入和启动。
代码打包记录查询 对代码编译信息进行记录,可查询代码版本以及编译时间等相关信息,方便运维人员更好的掌握代码信息。

(7) 信息发送集成

功能 说明
微信小程序订阅消息 支持微信小程序订阅消息发送。提供订阅消息模版工厂,可根据自身业务需求,编写少量代码既可以拓展支持新订阅消息模版。
极光消息推送集成 集成极光消息推送,对极光后台API进行封装,封装度高、调用方便,可快速与自定义业务需求整合,通过@EnableXXX注解开启或关闭。
环信消息集成 集成环信IM和消息推送,使用更加便捷,可在应用中根据自定义需求快速整合和拓展IM,发送手机推送消息。通过@EnableXXX注解开启或关闭。
多通道SMS集成 集成阿里、百度、中国移动、华为、京东、极光、网易、七牛、腾讯、又拍、云片等平台短信发送通道。可通过配置动态选择具体使用通道。支持多模版定义以及模版参数顺序控制

(8) 内容审核集成

功能 说明
阿里云内容审核 集成阿里云内容审核,支持文本、图片、音频、视频、网页内容审核,支持同步审核、异步审核、异步Callback方式审核通过@EnableXXX注解开启或关闭。
微信小程序内容审核 集成微信小程序内容审核,支持文本、图片、音频内容审核,支持同步、异步审核。通过@EnableXXX注解开启或关闭。
百度证照识别 集成百度证照审核,支持营业执照、身份证OCR识别。通过@EnableXXX注解开启或关闭。
天眼查企业信息查询 集成天眼查企业信息查询。通过@EnableXXX注解开启或关闭。

 

[2]、技术栈和版本说明

(1)Spring全家桶及核心技术版本

组件 版本
Spring Boot 2.7.2
Spring Cloud 2021.0.3
Spring Cloud Alibaba 2021.0.1.0
Spring Boot Admin 2.7.3
Spring Authorization Server 0.3.1
Nacos 2.1.0
Sentinel 1.8.3
Seata 1.3.0

(2)所涉及的相关的技术:

  • JSON序列化:Jackson & FastJson
  • 消息队列:Kafka 适配RabbitMQ,支持消息总线(Spring Cloud Bus)
  • 数据缓存:JetCache + Redis (两级缓存)
  • 数据库: Postgresql,MySQL,Oracle ...
  • 前端实现:Vue + Vuetify(单体版Vue + Vuetify + Typescript + 模块化)
  • 持久层框架: Spring Data Jpa & Mybatis
  • API网关:Gateway
  • 服务注册&发现和配置中心: Nacos
  • 服务消费:OpenFeign & RestTemplate & OkHttp3
  • 负载均衡:Spring Cloud Loadbalancer
  • 服务熔断&降级&限流:Sentinel
  • 分布式事务:Seata
  • 服务监控:Spring Boot Admin
  • 链路跟踪:Skywalking
  • 文件服务:阿里云OSS/Minio
  • 数据调试:p6spy
  • 日志中心:ELK
  • 日志收集:Logstash Logback Encoder,Skywalking

(3)前端工程技术栈

- Vue3
- Vite3
- Pinia
- Typescript
- Quasar2
- Vue-Router 4
- Vueliate

[3]、 版本号说明

本系统版本号,分为四段。

  • 第一段和第二段,与Spring Boot 版本对应,根据采用的Spring Boot版本变更。例如,当前采用Spring Boot 2.4.6版本,那么就以2.4.X.X开头
  • 第三段,表示系统功能的变化
  • 第四段,表示系统功能维护及优化情况

[4]、工程结构

dante-cloud
├── configurations -- 配置文件脚本和统一Docker build上下文目录
├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖
├── module -- 依赖组件半成品拼装工程
├    ├── dante-module-common -- Module 相关模块公共辅助代码组件
├    ├── dante-module-security -- Security 相关配置代码模块组件
├    ├── dante-module-upms-logic -- UPMS 基础管理及共享代码模块组件
├    └── dante-module-upms-rest -- UPMS 基础管理接口模块组件
├── packages -- 基础核心Starter
├    ├── authorization-spring-boot-starter -- OAuth2 认证基础Starter,主要用于 UAA 认证服务器以及单体版 Dante Cloud
├    └── service-spring-boot-starter -- 平台接入应用服务通用 Starter
├── platform -- 平台核心服务
├    ├── dante-cloud-gateway -- 服务网关
├    ├── dante-cloud-monitor -- Spring Boot Admin 监控服务
├    ├── dante-cloud-upms -- 统一权限管理系统服务
├    └── dante-cloud-uaa -- 账户管理和统一认证模块
├── services -- 平台业务服务
├    ├── dante-cloud-bpmn-ability -- 工作流服务
├    ├── dante-cloud-bpmn-logic -- 工作流基础代码包
├    ├── dante-cloud-cmdb-ability -- 简约CMDB管理服务
└──  └── dante-cloud-cmdb-logic -- 简约CMDB基础代码包
 

[5]、项目地址

[6]、用户权益

  • 允许免费用于学习、毕设、公司项目、私活等。
  • 遵循Apache-2.0开源协议

[7]、交流反馈

  • 欢迎提交ISSUS ,请写清楚问题的具体原因,重现步骤和环境(上下文)

[8]、界面预览

 

浏览 3
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报