分享一个自己开发的SpringCloud微服务开发平台

前言

​ 都2023年了,还有一种开发一个快速开发平台的想法,这大概有点落伍了,现在各种开源的系统实在是太多了。不过作为一个编程爱好者,还是决定自己从零开发一个,出发点有两个,一个是刚好这段时间稍微空闲一些,也是一直有这个想法,所以还是决定自己从零开发一个,可以跟随各种技术框架版本迭代而迭代,毕竟JDK都更新到21版本了,另一个是决定开始写博客文章,记录下自己平时的学习内容;

​ 下面的内容是介绍上面说的这个快速开发平台,名称叫Zerosx-Cloud多租户开发平台,以下简称《Zerosx-Cloud》,本文只介绍Zerosx-Cloud支持的主要功能,具体的代码、更详细的文档可以前往Gitee或者Github。

平台简介

Zerosx-Cloud是由作者个人兴趣下搭建及开发,开源,免费,仅供学习参考。

  • 基于JDK8、SpringBoot2.7.16、SpringCloud2021.0.5和SpringCloudAlibaba2021.0.5.0且采用前后端分离的微服务多租户体系架构;
  • 采用自定义Spring Boot Starter组件化的思想,简化开发,提升代码复用能力,结构解耦,易于扩展;
  • 实现了SpringCloudGateway集成OAuth2.0统一认证授权及URL级功能权限校验(适用于网络隔离场景,即网关是统一入口),且可自定义扩展OAuth2.0授权模式;
  • 集成Knife4j基于OpenAPI3的接口文档,方便前后端对接;
  • 代码生成器一键生成基础CRUD功能,节约开发时间,更多注重业务开发;
  • 提供一套基于Vue2.x的前端项目zerosx-vue2,此项目是参考【若依】前端开源改造适配,感谢若依(我是Vue2.x初学者,还不具备从零搭建一个完整的Vue项目,所以目前只能借鉴改造,勿喷^_^)。

项目地址

在线体验

体验系统只有主要组件及功能,因服务器资源有限故都是单节点部署,但是所有组件及应用都支持集群。

功能简介

1. 非业务功能

  • 网关统一权限控制:URL级的功能按钮的权限控制,支持配置不同客户端及白名单URL;
  • 网关统一鉴权:OAuth2令牌Token的有效性校验,支持配置忽略认证的URL;
  • 网关聚合文档:集成Knife4j基于OpenAPI3规范的接口文档,聚合所有微服务,方便前后端对接
  • OAuth2.0认证授权:
    • 支持OAuth2.0默认的4种鉴权方式;
    • 可扩展自定义授权模式,已实现用户名+验证码+密码、手机号码验证码两种授权模式;
    • 支持多账户类型授权,应用场景是同一授权模式下需要对不同的账户进行授权(不同数据库表);
  • 数据权限:多租户的数据隔离,采用的是同一数据库表的逻辑隔离(table添加租户标识的列来区分数据);
  • 数据安全:敏感数据的加密存储及解密,如手机号码、身份证号码等,不同加密字段可配置不同的加解密算法;
  • 数据导出:支持大量数据快速导出,支持配置每个sheet页的数据大小及每批次查询数据库数据条数大小;
  • 数据翻译:字段标识ID翻译成名称,已支持数据字典、枚举、行政区域、OSS访问链接、租户名称翻译,可扩展;
  • 链路追踪:记录整个调用链路的traceId和spanId,支持多线程;
  • OSS存储:支持多家OSS厂商且参数配置界面化,方便管理及文件管理,已实现阿里云、七牛云、腾讯云厂商,可扩展;
  • SMS短信:支持多家SMS厂商且参数配置界面化,方便管理,已实现阿里云、聚合短信厂商,可扩展;
  • 分布式任务调用:集成XXL-JOB分布式任务调度;
  • 分布式事务:集成Seata分布式事务;
  • 分布式锁:集成Redisson分布式锁,有测试案例;
  • 代码生成器:高度符合阿里巴巴开发手册规范的前后端代码一键生成,减少CRUD基础开发,更专注业务开发;
  • 系统监控:集成SpringBootAdmin应用监控;

2. 内置基础功能

  • 租户管理
    • 租户管理:接入系统的租户公司的管理
    • 套餐管理:租户套餐定价管理(计划)
    • 定价规则:定义套餐的不同规则不同价格(计划)
    • 优惠折扣:发布有时间限制的套餐购买优惠(计划)
    • 租户订单:租户套餐购买订单管理(计划)
  • 权限管理
    • 用户管理:系统用户的配置,及管理租户的数据权限分配
    • 角色管理:角色菜单权限分配
    • 部门管理:配置租户的组织部门,也可用作用户组,简化新用户的权限分配
    • 岗位管理:岗位管理,用户所担任的职务
  • 系统管理
    • 菜单管理:菜单、按钮、功能权限的管理,生成动态路由
    • 字典管理:数据字典的维护
    • 参数设置:系统动态参数的维护
    • 日志管理
      • 操作日志:操作记录日志
      • 登录日志:OAuth2授权登录日志
  • 资源管理
    • 行政区域:中华人民共和国行政区域的维护
    • 对象存储:集成多家对象存储,配置管理及上传文件管理
    • 短信配置:集成多家短信服务商及短信业务模板的配置
  • 系统工具
    • 系统监控:SpringBootAdmin系统监控
    • 接口文档:OpenAPI3聚合接口文档
    • 任务调度中心:XXL-JOB任务调度中心

软件架构图

备注:图中灰色虚线块组件作者并未搭建(服务器资源有限),只做一个选型参考。

尾声

"纸上得来终觉浅,绝知此事要躬行 ",想要学好编程,只有靠自己一行一行敲出来才有可能学好,努力吧,少年!

相关推荐
IT_陈寒3 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端
Thneonl3 小时前
Celery 生产踩坑:1000 任务积压与 acks_late 双重执行
后端·python
卷福同学3 小时前
第一次当面试官有感
后端·面试
苏三说技术3 小时前
为什么越来越多人用 OnlyOffice?
后端
知守观3 小时前
@Transactional 事务失效排查,try-catch 吞异常导致回滚失败(附源码分析)
后端·spring
羑悻3 小时前
Codex + Seed-2.1-pro 实测:多模态理解 + Coding Agent 能扛住真实仓库吗?
后端
颜进强3 小时前
14 · NestJS ExecutionContext 执行上下文:守卫、拦截器、过滤器拿到的"同一个 context",为什么能力不一样?
前端·后端·ai编程
小小张说故事3 小时前
Python 多线程为什么跑不快?asyncio 入门指南:异步并发从零上手
后端·python
明月_清风3 小时前
数据进入平台后怎么处理?一文搞懂 ETL
大数据·后端·数据分析
初学AI的小高3 小时前
LangGraph断点恢复与幂等执行实战
后端·架构