当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

Dante Cloud

企业级技术中台微服务架构
授权协议 Apache-2.0
开发语言 Java
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 皇甫夕
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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]、界面预览

 

  • 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

  • Hartmann watched tensely as Colonel Moore and his four-man command group appeared on screen, firing from shoulder and hip as they passed under the lead wagons.  The linemen followed in waves, each tur

  • 安装教程参考 https://blog.csdn.net/u011421988/article/details/115465901 1.在pom文件引入相关的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch<

 相关资料
  • 注意:本书中的 Service Mesh 章节已不再维护,请转到 istio-handbook 中浏览。 本节是根据由Nginx赞助,O’Reilly出版社出品的关于服务网格的书籍总结而来,本书标题是 The Enterprise Path to Service Mesh ,还有个副标题 Decoupling at Layer 5 ,第一版发行于2018年8月8日。这本书一共61页,本文是我对该书

  • 我们的团队正试图分离一个单一的spring mvc管理应用程序(创建、更新、删除),我们希望采用基于微服务的架构。 经过一些研究,似乎最好的办法是根据软件的特定部分解决的问题创建微服务,例如管理客户机。 当我们阅读一些定义时,问题就来了,比如维基百科中的以下定义: 微服务体系结构是否应该基于应用程序的分层组织方式来设计? 谢了。

  • 理论基础 概念 多微合适 非代码函数 非重写时间 适合团队最重要 独立业务属性 全功能团队 进程隔离 服务运行在独立的进程中 轻量级通信 协议跨平台 格式语言无关 独立性 独立开发 独立测试 独立部署 本质 服务作为组件 围绕业务组织团队 产品驱动而非项目驱动 技术多样性 业务数据独立 基础设施自动化 演进式架构 优点 按需伸缩 独立部署 业务独立 技术多样性 缺点 1. 运维成本高 环境配置(P

  • 本文向大家介绍浅析Android企业级开发数据绑定技术,包括了浅析Android企业级开发数据绑定技术的使用技巧和注意事项,需要的朋友参考一下 这篇文章通过发文的方式让大家知道什么是数据绑定,以及为什么要用数据绑定等问题,有助于大家理解Android企业级开发数据绑定技术。 首先要了解什么是数据绑定?为什么要用数据绑定?怎么用数据绑定?   语法的使用 简单例子,数据绑定textview控件,一般

  • 微信将企业号升级为企业微信,为企业提供专业的通讯工具、丰富的办公应用与API,助力企业高效沟通与办公。智齿客服平台支持企业微信渠道,绑定后你可以使用智齿客服工作台统一接收与回复企业微信员工发来的消息 。智齿客服支持两种接入方式,原生接入和H5接入,下面介绍原生接入的步骤: 1、填写企业微信ID 获取企业微信id说明: 2.企业客户管理员扫码授权 3.企业管理员扫码后在企业微信中授权 4.完成授权后

  • 企业微信 企业微信需要开发者授权,对接成功后,用户在企业微信的范式机器人应用发送的消息会转发给机器人,机器人会自动回复消息给企业微信用户。 开发者授权的步骤如下: 1、获取CorpID(企业ID) 在接入管理-企业微信中,填写要绑定的企业微信名称: 登录企业号管理后台“我的企业” > “企业信息”中找到CorpID,也填入对应输入框中。企业号后台如下图: 2、创建应用并绑定 在企业号管理后台“企业

  • Kubernetes 设计之初就是按照 Cloud Native 的理念设计的,Cloud Native 中有个重要概念就是微服务的架构设计,当将单体应用拆分微服务后, 随着服务数量的增多,如何微服务进行管理以保证服务的 SLA 呢?为了从架构层面上解决这个问题,解放程序员的创造性,避免繁琐的服务发现、监控、分布式追踪等事务,Service mesh 应运而生。 微服务 下图是Bilgin Ibr

  • 🕒 岗位/笔试时间 无笔试 🕒 岗位/面试时间 2023年12月 👥 面试题目 一面:线下客户成功部门经理面的,我提前一个小时到的,本来就是第一次找实习面试,抱着试试的心态来积累面试经验的,一开始介绍公司背景和岗位职责,问了( 你是如何看待这家公司? 如何看待这个岗位?对这个岗位的理解? 介绍一下你大学最成功的一件事?自己的缺点? 不同编程语言的不同 Java八股 八大数据类型 几种集合类型