项目介绍

码匠君 ... 2021-10-28 大约 19 分钟

# 项目介绍

# 工程结构

# 后端工程结构

eurynome-cloud
├── configurations -- 配置文件脚本和统一Docker build上下文目录
├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖
├── packages -- 基础通用依赖包
├    ├── eurynome-cloud-assistant -- Spring相关公共辅助工具、注解相关工具代码组件
├    ├── eurynome-cloud-cache -- Cache和Redis工具模块组件
├    ├── eurynome-cloud-captcha -- 验证码模块组件
├    ├── eurynome-cloud-data -- 数据持久化等数据处理相关代码组件
├    ├── eurynome-cloud-kernel -- 微服务接入平台必备组件
├    ├── eurynome-cloud-message -- 消息处理相关代码组件
├    ├── eurynome-cloud-oauth -- OAuth2通用代码
├    ├── eurynome-cloud-oauth-starter -- 自定义OAuth2 Starter,Athena单体版核心Starter
├    ├── eurynome-cloud-pay -- 支付核心组件包
├    ├── eurynome-cloud-rest -- Rest相关代码组件
├    ├── eurynome-cloud-sercurity -- Security通用代码
├    ├── eurynome-cloud-starter -- 微服务核心Starter
├    ├── eurynome-cloud-web -- Web 应用基础组件
├    └── eurynome-cloud-websocket -- WebSocket核心代码包
├── platform -- 平台核心服务
├    ├── eurynome-cloud-gateway -- 服务网关
├    ├── eurynome-cloud-monitor -- Spring Boot Admin 监控服务
├    └── eurynome-cloud-uaa -- 统一认证模块
├── services -- 平台业务服务
├    ├── eurynome-cloud-upms-logic -- 通用用户权限service
├    ├── eurynome-cloud-upms-rest -- 通用用户权限rest 接口
├    ├── eurynome-cloud-upms-ability -- 通用用户权限服务
├    ├── eurynome-cloud-upms-rest -- 工作流基础代码包
└──  └── eurynome-cloud-bpmn-ability -- 工作流服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 前端工程结构

eurynome-cloud-ui
├── .vscode -- Vscode配置,方便统一开发环境便于管理。目前只有Typescript SDK版本指定。
├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖
├── documents -- 工程相关文档(已统一采用在线文档)
├    └── readme -- 工程Readme.md使用静态资源
├── packages -- 基础通用依赖包
├    ├── @hecate/h-bpmn-moddle -- 工作流编辑器组件
├    ├── @hecate/h-button -- 基于Vuetify封装的按钮组件
├    ├── @hecate/h-table -- 基于Vuetify封装的Table组件
├    ├── @hecate/plugins -- 第三方插件通用配置
├    ├── @hecate/utils -- 通用工具代码包
├    └── @herodotus/ui -- 前端工程
├── scripts -- rollup 通用编译脚本
├── .editorconfig -- 编辑器统一设置
├── .eslintignore -- Eslint忽略文件
├── .eslintrc.js -- Eslint配置
├── .gitignore -- Git忽略文件
├── .prettierignore -- Prettier忽略文件
├── .prettierrc -- Prettier配置
├── babel.config.js -- Babel配置
├── lerna.json -- Lerna配置
├── postcss.config.js -- Postcss配置
├── tsconfig.json -- Typescript统一配置
├── .editorconfig -- 编辑器统一设置
└── yarn.lock -- Yarn 依赖包锁定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 核心技术

# 后端核心技术

# (1)Spring 相关核心技术及版本

组件 版本
Spring Boot 2.6.7
Spring Cloud 2021.0.2
Spring Cloud Alibaba 2021.0.1.0
Spring Boot Admin 2.6.7
Nacos 2.1.0
Sentinel 1.8.3
Seata 1.3.0

# (2)涉及的相关的技术

  • 持久层框架: Spring Data Jpa & Mybatis Plus
  • API 网关:Spring Cloud Gateway
  • 服务注册&发现和配置中心: Alibaba Nacos
  • 服务消费:Spring Cloud OpenFeign & RestTemplate & OkHttps
  • 负载均衡:Spring Cloud Loadbalancer
  • 服务熔断&降级&限流:Alibaba Sentinel
  • 服务监控:Spring Boot Admin
  • 消息队列:使用 Spring Cloud 消息总线 Spring Cloud Bus 默认 Kafka 适配RabbitMQ
  • 链路跟踪:Skywalking
  • 分布式事务:Seata
  • 数据缓存:JetCache + Redis + Caffeine, 自定义多级缓存
  • 数据库: PostgresqlMySQLOracle ...
  • JSON 序列化:Jackson & FastJson
  • 文件服务:阿里云 OSS/Minio
  • 数据调试:p6spy
  • 在线文档:Springdoc + Swagger 3 + OpenAPI
  • 日志中心:ELK
  • 日志收集:Logstash Logback Encoder
  • 数据同步:Debezimu
  • 外部集成:JustAuthWxJava,多种短信 API
  • 工作流引擎:Camunda

# 前端核心技术

  • Vue2
  • Vuex
  • Vue-router
  • Vue-cli
  • Axios
  • Vuetify
  • Bpmn.js
  • Localforage
  • Rollup
  • Lerna
  • Typescript

# 功能介绍

# [1]统一安全认证中心

功能 介绍 开源
OAuth2 安全认证 支持 OAuth2 授权码模式,隐式授权码模式(简单模式),密码模式和客户端模式四种授权模式
JWT Token 令牌 采用 JWTOAuth2 Token 进行加密,支持 Token 扩展信息添加
自定义 OAuth2 页面 自定义OAuth2 login,confirm,error 页面,提升系统使用用户体验。可结合自身需求进行修改
授权码模式登录验证码 OAuth2 授权码模式登录进行了扩展,增加验证码保护,支持 gif,中文,算数等类型,可通过配置进行修改以及是否显示验证码控制
授权码模式登录数据加密传输 基于 AES 对 OAuth2 授权码模式登录数据进行动态加密传输,可通过配置对表单参数名进行修改配置
密码模式登录加密传输 混合 RSA(非对称) 和 AES(对称加密) 算法,对OAuth2 密码模式登录数据进行动态加密传输
接口权限管理 基于 RBAC 模型,以角色和接口为核心,实现接口使用的安全性管理。支持网关与服务多级接口白名单配置
服务认证管理 平台涉及的服务,均需配置独立的 OAuth2 Client 信息以及独立 Nacos 配置,进行单独的 Client 验证才可进行接入和使用,更加符合 OAuth2 规范要求
接口权限鉴权 全面整合 @PreAuthorize 注解权限与 URL 权限,通过后端动态配置,无须在代码中配置 Spring Security 权限注解以及权限方法,即可实现接口鉴权以及权限的动态修改。采用分布式鉴权方案,规避 Gateway 统一鉴权的压力以及重复鉴权问题
User,Client 数据策略访问 OAuth2 UserDetailsClientDetails 核心数据支持直连数据库获取和 Feign 远程调用两种模式。OAuth2 直连数据库模式性能更优,Feign 访问远程调用可扩展性更强。可通过配置动态修改采用策略方式。
手机短信验证码注册认证 采用自定义 OAuth2 授权模式,使用统一 Token 接口,实现手机验证码登录认证,与平台为统一体系,统一返回OAuth2 Token,支持服务接口鉴权
第三方系统社交注册认证 集成 JustAuth,采用自定义 OAuth2 授权模式,使用统一 Token 接口,实现基于 JustAuth 实现第三方系统社交登录认证,与平台为统一体系,统一返回 OAuth2 Token,支持服务接口鉴权。所有 JustAuth 支持的第三方系统均支持。
微信小程序注册认证 采用自定义 OAuth2 授权模式,使用统一 Token 接口,实现支持微信小程序登录认证,与平台为统一体系,统一返回 OAuth2 Token,支持服务接口鉴权。
其它方式注册认证 采用策略模式对外部系统登录认证和用户注册进行接入支持,采用 OAuth2 默认认证接口。目前未集成的外部系统,可参考标准,适当增减参数,即可支持接入。

# [2]统一服务访问网关

功能 介绍 开源
网关动态路由 基于 GatewayNacos 实现服务网关动态路由,无须增加任何配置,即可支持服务的发现与路由。
网关服务鉴权 采用各服务分布式鉴权,服务网关仅集成部分鉴权功能,增加了权限验证层次,规避无效的重复验证。提升系统安全性和访问有效性,降低接口访问压力。
网关服务限流 基于 Sentinel 实现服务的限流,支持基于 Gateway Filter 的自定义限流。
动态文档聚合 基于 SpringDoc 实现网关动态Swagger文档聚合,全面使用Open API 3.0,支持Knife4j增强和不同环境访问控制。
统一跨域处理 基于 Gateway 实现统一跨域处理 。
统一错误处理 平台统一错误处理,支持自定义错误码体系,有效集成 OAuth2Spring Validation 等多方错误体系并有机整合 HTTP 状态码,响应结果更加多样灵活,反馈结果也更加人性化,便于理解和定位问题。
自定义动态路由 除原有 Gateway 配置方式,支持基于数据库和 Redis 联动的的动态路由管理与路由规则配置,简单实现接口即可实现自定义配置管理。
网关大响应体数据分段传输 扩展 Spring Cloud Gateway 代码,实现大响应体请求数据分段传输,解决 Spring Cloud Gateway 大响应体数据丢失问题 。
服务灰度发布 整合 Nacos 权重和 Spring Cloud Loadbalancer 软负载,通过 Nacos 进行动态权限配置,支持服务灰度发布。

# [3]微服务架构支撑

功能 介绍 开源
服务注册发现 基于 Nacos 实现服务的注册与发现。
服务负载均衡 Spring Cloud Netflix 停止维护,使用 Spring Cloud Loadbalancer 全面替换 Ribbon。支持 Spring Cloud Loadbalancer 请求缓存,提升访问有效性和运行稳定性。
服务熔断降级 整合 OpenFeignSentinel,从熔断降级,系统负载保护,热点防护等多个维度来保障微服务的稳定。支持 Sentinel 上报 Metrics 数据持久化存储到 Influxdb 时序数据库中,以及反向将 Sentinel 流控配置信息以配置文件的形式持久化存储至 Nacos
统一配置中心 基于 Nacos 搭建的统一配置中心,支持配置文件自动导入和关键信息加密,可根据文件夹名称自动分组配置。
统一日志中心 采用 TCP 直连的方式采集和发送日志,集成 Skywalking TraceID 实现日志聚合及 ELK 日志分析。通过 @EnableXXX 注解开启或关闭日志采集功能,支持日志聚合分析。
分布式工作流 Camunda 引擎为基础定义分布式工作流引擎,提供自研人事信息管理以及人事管理体系与工作流用户体系的实时集成
分布事务处理 集成 Seata,支持分布式事务,无代码侵入,灵活便捷
分布对象存储 支持 Minio 分布式对象存储。同时,集成阿里云 OSS,可通过 @EnableXXX 注解开启或关闭功能。

# [4]微服务运行监控

功能 介绍 开源
服务调用链监控 集成 Skywalking 进行服务调用链的监控,调用链监控深度可延伸至Undertow,数据库,Redis
应用吞吐量监控 集成 Skywalking 进行应用吞吐量监控。
熔断,降级监控 集成 Sentinel 进行服务的熔断,降级监控,支持 Sentinel 上报 Metrics 数据持久化存储到 Influxdb 时序数据库中,以及反向将 Sentinel 流控配置信息以配置文件的形式持久化存储至 Nacos 中。便于扩展更多的监控内容以及进行监控数据的分析。
微服务状态监控 集成 Spring Boot Admin 进行服务运行状态的监控,支持代码提交、代码编译、代码版本、提交人等诸多信息的监控。
运行环境状态监控 集成 TICK 监控方案实现对于服务器运行状态、服务运行状态等运行时状态监控以及告警,便于扩展更多的监控内容以及展现方式。

# [5]数据自动化处理

功能 介绍 开源
数据模型初始化 RBACOAuth2 部分核心表,Camunda 数据表,在初始部署过程中为自动化创建。
核心应用数据初始化 RBACOAuth2 等核心数据,在初始部署过程中为自动化导入。
URL 权限数据动态汇总 自动扫描 URL 接口作为权限汇总存入系统,根据 URL 相关信息生成唯一 ID,多次导入数据不会重复。可通过配置动态开启或修改扫描内容。
动态权限数据分发 采用分布式服务独立鉴权方案,Spring Security @PreAuthorize 的权限注解、权限方法以及 URL 权限,通过后端动态配置后,实时动态分发至对应服务。
Yml 配置自动导入 服务所需使用的配置文件,可自动根据文件夹进行分组并导入到 Nacos 中。
服务工程动态创建配置 支持使用 Maven Archetype 动态创建新服务代码工程,同步为新服务分配独立的 Client 校验信息,并创建对应的配置信息发布至 Nacos 中。

# [6]服务开发支撑

功能 介绍 开源
通用 CRUD 封装 各种类型的代码生成器较多,结合实际应用使用效果来看,代码生成器在实际开发中使用频率低于理想预期。因此,没有考虑提供代码生成器,而是对常规的 CRUD 进行了多层次的封装,使定制化服务的开发更加便捷。
自研两级缓存封装 自研基于 CaffeineRedis 分布式两级缓存,完美支持 JPA Hibernate 二级缓存,完美支持各类查询数据缓存以及 JPA @ManyToMany@ManyToOne等关联查询。实现基于CaffeineHibernate 二级缓存,可与自研两级缓存快速切换,仅使用本地缓存创建 Key 繁琐和分页数据无法更新的问题。自定义 Mybatis Plus 二级缓存,支持基于CaffeineRedis 多级缓存。
多类型数据库支持 默认采用 PostgreSQL 数据库,支持 MySQLOracleH2等多种关系型数据库,无须修改代码可动态切换。数据层同时支持 Spring Data JpaMybatis Plus
多消息队列支持 消息总线(Spring Cloud Bus), 适配 RabbitMQKafka,默认使用 Kafka
多种服务调用方式 默认采用 OpenFeign 进行服务间调用,支持 RestTemplateOkHttps
多种 Redis 客户端支持 系统底层使用 Spring Data Redis,默认使 Lettuce 客户端。除 Spring Data Redis 已支持的客户端外,还集成了 Redission 客户端,可通过配置,动态开启或关闭
共享式多环境切换 共享式,统一化多环境配置模式,Xml,Yml,Docker 均采用此方式配置,避免类似的服务配置,Dockerfile 配置导出复制和修改的问题。
多团队开发管理 支持多团队开发,可针对各个团队开发服务,进行单独的授权配置。
注解模型模块模式 除必要依赖逻辑以及强注入顺序要求的模块采用 Spring SPI(spring.factories)机制外,其它功能模块均采用 @EnableXXX 注解编程模型,可选择性进行控制是否开启对应模块,减少不必要的依赖注入和启动。
代码打包记录查询 对代码编译信息进行记录,可查询代码版本以及编译时间等相关信息,方便运维人员更好的掌握代码信息。
两种架构模式支撑 平台提供“分布式微服务”和“单体版”两种架构,核心代码共享,代码可以平滑迁移,适合不同应用使用需求。

# [7]系统安全增强

功能 介绍 开源
授权码模式安全强化 OAuth2 授权码模式登录进行了扩展,增加验证码保护,支持 gif,中文,算数等类型,基于 AES 对 OAuth2 授权码模式登录数据进行动态加密传输,可通过配置对表单参数名以及是否显示验证码进行修改
密码模式安全强化 基于自定义 Session,混合 RSA(非对称) 和 AES(对称加密) 算法,实现 AES 动态生成加密传输。利用“一人一码机制”,实现密码模式登录数据进行动态加密传输。配合 OAuth2 Client 验证,保护开放权限接口调用的合理性和安全性。
全面的 XSS 攻击和 SQL 注入防控 完善接口 XSS 脚本攻击过滤和 SQL 注入机制,同时支持请求参数和 JSON 请求体过滤。采用 Ebay XSS 过滤模型,进一步提升防控能力。
动态灵活的接口防刷机制 接口幂等和防刷机制,均支持全局配置控制,同时提供@Idempotent 和@AccessLimited 注解进行灵活的,个性化的配置。 接口幂等和防刷机制缓存标记采用分布式多级缓存进行存储,降低单一访问 Redis 带来的访问压力,同时支持多实例数据多级缓存本地数据同步。所涉及标记缓存时间配置全部统一支持 Duration 时间格式,简化配置参数,提升配置便捷度。
一人一钥的数据加密安全机制 混合 RSA(非对称) 和 AES(对称加密) 算法,基于自定义注解,设计接口数据前后端加密传输机制。 设计自定义数据传输 Session,规避 Vue Session 变化问题。基于自定义 Session,实现 AES KEY 动态生成,加密传输,一人一钥的安全机制,提高系统安全性。全面支持使用 Spring @RequestParam 注解接口数据加解密。
多样统一的验证码 将行为验证码与图形验证码以及 Hutool 验证码整合并统一,目前支持滑块拼图、文字点选、算数类型、中文类型、字母类型、GIF 类型,以及 Hutool 圆圈干扰、扭曲干扰、线段干扰等多种类型验证码。使用统一接口,可以通过参数动态控制显示内容及形式。
敏感配置信息加密 集成 Jasypt,对敏感配置进行,防止关键信息泄露。支持 Spring Boot 配置文件以及 Nacos 配置文件配置信息加密。

# [8]应用支撑模块

功能 介绍 开源
WebSocket 模块 全面使用 STOMP 上层协议,支持 WebSocket 集群 Session 共享,信息广播及点对点发送,在线统计,可方便拓展断开重连,心跳机制。
Pay 模块 封装阿里支付、微信支付核心 API,支持普通商户及 ISV 模式,使用更加便捷。商户信息可配置,支持多商户管理。默认使用配置文件进行商户信息配置,支持使用关系型数据库进行商户信息存储,也可灵活自定义其它类型的存储媒介。采用事件机制实现支付异步通知以及异步回调处理,规避多次异步通知问题。最大程度上降低支付模块与实际业务的耦合性,便于开发更加独立的、更易扩展的订单、支付等微服务。
InfluxDB 模块 InfluxDB 集成支撑模块,使用 InfluxDB 1.X 版本实现,支持配置化及动态开启关闭。
Minio 模块 Minio 对象存储对象存储(OSS)模块,支持注解@EnableXXX 条件开启和关闭闭。
Maven 模块 Maven 管理代码包,基于此代码包,可通过代码或界面操作实现 Maven 的相关操作、以及在线创建本平台新服务功能。
Nacos 模块 Nacos 管理代码包,基于此代码包,可通过代码或界面操作,实现 Nacos 的远程管理等诸多操作。

# [9]信息发送集成

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

# [10]内容审核集成

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

# [11]后台管理功能

功能 介绍 开源
用户管理 用户是系统操作者,该功能主要完成系统用户配置。包含第三方登录用户信息的管理。
角色管理 创建用户角色,为角色权限分配,设置角色接口权限划分。
权限管理 对动态汇总的、各个服务的接口进行统一管理。
安全管理 动态设定接口表达式权限,替代在代码中使用 @PreAuthorize 注解,antMatchers 方法等传统权限控制手段。
终端管理 OAuth2 终端信息管理,设置终端认证类型,Token 有效时间,权限范围等信息。
应用管理 结合 OAuth2 机制,创建应用信息,申请 APP_KEY。
范围管理 创建终端权限范围,设置范围对应权限。
服务管理 为新开发服务,创建 Client 验证信息,并发布值 Nacos。根据需要动态创建服务工程。
机构管理 配置系统组织机构,支持树形结构展示。
部门管理 配置机构下属部门信息,支持树形机构展示。
人员管理 配置机构人员信息,为人员分配和创建用户信息。
归属管理 配置机构,部门和人员的归属关系,支持人员信息唯一,绑定标准机构,党团,工会等多种机构类型。避免针对不同机构类型为统一人员创建重复信息。此种结构设定,与Camunda工作流人员体系一一对应。
系统接口 根据业务代码自动生成相关的 api 接口文档。
服务监控 监视当前系统 CPU,内存,磁盘,堆栈等相关信息。
工作流编辑器 基于BPMN 2.0标准的在线工作流模型编辑器,支持SVGXML格式导入、导出、云端上传。
上次编辑于: 2022年4月30日 22:18
贡献者: 码匠君 , herodotus