Skip to content

架构设计

本文档详细说明 HEI Cloud 的架构设计理念。项目的基础架构思想参考了 Snowy 快速开发平台。

设计原则

1. 微服务架构

HEI Cloud 采用微服务架构,将单体应用拆分为多个独立的服务:

  • 服务独立部署: 每个服务可以独立部署和扩展
  • 服务自治: 每个服务拥有独立的数据库和业务逻辑
  • 松耦合: 服务间通过 API 通信,降低依赖
  • 高可用: 支持服务熔断、降级、负载均衡

2. API 与实现分离

参考 Snowy 的设计理念,将模块的 API 定义与具体实现分离:

api/                                  # API 定义(接口、DTO)
├── auth-api/                         # 认证模块对外暴露的接口
├── sys-api/                          # 系统模块对外暴露的接口
├── client-api/                       # C 端模块对外暴露的接口
└── biz-api/                          # 业务模块对外暴露的接口

modules/                              # 具体实现
├── auth/                             # 认证模块实现(依赖 auth-api)
├── sys/                              # 系统模块实现(依赖 sys-api)
├── client/                           # C 端模块实现
└── biz/                              # 业务模块实现

设计优势

  • 服务间调用只依赖 API 接口,不引入实现模块的完整依赖树
  • 模块内部实现可以自由重构,不影响外部调用方
  • 便于服务拆分和独立部署

3. 国密安全体系

Snowy 是国内首个国密前后端分离的快速开发平台,HEI Cloud 继承了这一安全理念:

场景技术方案
密码传输SM2 非对称加密,前端公钥加密,后端私钥解密
Token 认证Sa-Token + JWT(为了兼容其他 Hei 系列的实现)
权限控制基于 RBAC 的注解权限

4. 前后端分离

  • 后端: 专注提供 RESTful API,无页面渲染逻辑
  • 前端: 独立部署的 Vue3 SPA,通过 API 交互
  • 接口文档: Knife4j 自动生成 OpenAPI 3 规范文档

技术架构

整体分层

┌─────────────────────────────────────────────────────────┐
│                       apps (启动层)                       │
│                   应用启动 + 配置聚合                       │
├─────────────────────────────────────────────────────────┤
│                  modules (业务模块层)                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐ │
│  │   auth   │  │   sys    │  │  client  │  │   biz    │ │
│  │  认证模块  │  │  系统模块  │  │  C 端模块  │  │  业务模块  │ │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘ │
├─────────────────────────────────────────────────────────┤
│                  api (API 接口层)                         │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐ │
│  │ auth-api │  │  sys-api │  │client-api│  │  biz-api │ │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘ │
├─────────────────────────────────────────────────────────┤
│              common/core (公共核心层)                     │
│     实体 · 异常 · 工具 · 结果封装 · 常量定义               │
├─────────────────────────────────────────────────────────┤
│                    技术栈支撑层                            │
│ Spring Boot 3.5.9 · MyBatis-Plus · Sa-Token · Redis      │
└─────────────────────────────────────────────────────────┘

模块依赖关系

apps
├── modules-auth ──→ auth-api ──→ common-core
├── modules-sys  ──→ sys-api   ──→ common-core
├── modules-client
├── modules-biz
└── common-core

请求处理流程

HTTP 请求

[过滤器链] IP 解析

[Sa-Token 拦截器] Token 校验

[Controller] 接收请求,参数校验

[Service] 业务逻辑处理

[Mapper] 数据访问

[数据库] MySQL

核心架构组件

认证授权体系

┌─────────────────────────────────────────┐
│            Sa-Token 认证网关              │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  │
│  │ 登录校验 │  │ 权限校验 │  │ 角色校验 │  │
│  └─────────┘  └─────────┘  └─────────┘  │
├─────────────────────────────────────────┤
│          SM2 国密加密层                   │
│     密码加密传输,防中间人攻击               │
├─────────────────────────────────────────┤
│          JWT Token 签发                  │
│     独立 Redis 存储,30 天有效期            │
└─────────────────────────────────────────┘

B/C 端双认证体系

项目支持 B 端和 C 端两套独立的认证体系:

用户表认证工具注解
B 端sys_userStpUtil@SaCheckLogin@SaCheckPermission@SaCheckRole
C 端client_userStpClientUtil@SaClientCheckLogin@SaClientCheckPermission@SaClientCheckRole

数据访问层

┌─────────────────────────────────────────┐
│          MyBatis-Plus 持久层              │
│  ┌──────────┐  ┌──────────┐  ┌────────┐  │
│  │ 逻辑删除  │  │ 自动填充  │  │ 分页插件│  │
│  └──────────┘  └──────────┘  └────────┘  │
├─────────────────────────────────────────┤
│          Easy-Trans 数据翻译              │
│      自动翻译字典、关联字段                 │
└─────────────────────────────────────────┘

约定优于配置

约定说明
包命名io.github.jiangbyte.modules.{业务}.{模块}
API 路径/api/{版本}/{模块}/{操作}
权限标识{模块}/{操作}sys/user/page
返回格式统一 Result<T> 封装
主键策略雪花算法 ASSIGN_ID
逻辑删除is_deleted 字段
审计字段createdByupdatedBycreatedAtupdatedAt 自动填充

与 Hei Boot 的区别

特性Hei BootHei Cloud
架构单体应用微服务架构
部署单个 JAR多服务独立部署
数据库共享数据库服务独立数据库
通信方法调用RPC/HTTP 调用
配置中心Nacos(规划中)
服务网关Spring Cloud Gateway(规划中)

Released under the MIT License.