Spring Cloud 微服务脚手架:Simple Cloud 系统架构设计
本文介绍一个基于 Spring Boot 3.2 + Spring Cloud 2023 的多模块微服务脚手架项目的整体结构与模块划分思路。
一、项目简介
Simple Cloud 是一个微服务脚手架项目,设计目标有四个:
- 统一认证:所有外部请求由网关集中鉴权,业务服务不直接接触外部 Token;
- 无状态化:基于 JWT Token 认证,不用 Session;
- 内部可信:网关转发给下游服务的请求必须带签名,防止身份伪造;
- 能力组件化:JWT、签名、Redis、权限控制等都封装成公共模块,业务服务开箱即用。
二、技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| JDK | 17 | 运行时 |
| Spring Boot | 3.2.0 | 基础框架 |
| Spring Cloud | 2023.0.3 | 微服务治理 |
| Spring Cloud Alibaba | 2023.0.3.2 | Nacos 集成 |
| Nacos | --- | 注册中心 + 配置中心 |
| Spring Cloud Gateway | --- | 统一入口网关 |
| OpenFeign | --- | 服务间调用 |
| MyBatis-Plus | 3.5.5 | ORM 框架 |
| MySQL / Redis | --- | 存储与缓存 |
| JJWT | 0.12.3 | JWT 生成与校验 |
三、项目结构
项目采用 Maven 多模块组织,按职责划分为五层,依赖方向严格单向:
simple-cloud/
├── common/ # ① 公共能力层(无业务)
│ ├── common-core # 统一返回体、异常定义
│ ├── common-spring-core # 全局异常处理、密码加密器
│ ├── common-spring-redis # Redis 配置与操作封装
│ ├── common-spring-mybatis-plus # 审计字段自动填充
│ ├── common-spring-auth-jwt # JWT 生成与校验
│ └── common-spring-auth-sign # 内部请求 HMAC 签名
├── entity/ # ② 实体层(不依赖任何 Web 框架)
│ ├── common-entity # 基础实体(审计字段、逻辑删除)
│ ├── system-entity # 用户、管理员等实体与 DTO
│ └── auth-entity # 登录请求/响应 DTO
├── feign/ # ③ Feign 客户端层
│ └── system-feign # 系统服务的内部调用接口
├── auth-lib/ # ④ 授权框架(可插拔)
│ ├── auth-common # 公共定义
│ ├── auth-manual # 手动拦截器模式
│ ├── auth-spring-security # Spring Security 模式
│ └── auth-starter # 自动装配入口,按配置切换模式
├── web/ # ⑤ 业务服务层(可部署单元)
│ ├── auth-web # 认证中心(端口 8081)
│ └── system-web # 系统服务(端口 8083)
└── gateway/ # 网关(端口 8080)
分层上有几条约束保证架构不腐化:
- 聚合模块零依赖:web、entity、feign 等父模块只聚合,依赖全部在子模块中显式声明;
- 实体层零框架污染:entity 模块只引入 MyBatis-Plus 注解包,不引入任何 starter,避免把数据源等自动配置传染给使用它的服务;
- 公共能力自动装配:每个 common 模块都通过 Spring Boot 自动配置机制注册组件,业务模块引入依赖即可用。