数据流转架构方案
文档编号: SYS-TR-AR-003
版本: 1.0
日期: 2026-03-10
编制: 系统架构师
审核: 审核通过 ✅
1. 方案背景
系统平台需要处理用户数据、权限数据、组织架构数据等多种数据类型。数据流转架构设计需要考虑:
- 数据一致性
- 读写性能
- 数据安全
- 与现有系统集成
2. 数据分层架构
┌─────────────────────────────────────────────────────────────┐
│ 数据接入层 │
│ API请求 / 批量导入 / 外部系统同步 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 业务逻辑层 │
│ 数据校验 / 业务处理 / 权限控制 │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 主存储层 │ │ 缓存层 │ │ 外部数据层 │
│ MySQL 8.0 │ │ Redis 7.x │ │ ERP/CRM/OA │
│ (业务数据) │ │ (热点数据) │ │ (集成数据) │
└─────────────────┘ └─────────────────┘ └─────────────────┘3. 数据流转设计
3.1 用户登录数据流
┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 用户 │────>│ 前端 │────>│ 后端 │────>│ 认证中心 │
│ │ │ (Vue) │ │(SpringBoot) │ │ (OAuth2.0) │
└─────────┘ └─────────────┘ └──────┬──────┘ └──────┬──────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Redis │ │ MySQL │
│ (会话缓存) │ │ (用户数据) │
└─────────────┘ └─────────────┘流程说明:
- 用户输入用户名密码
- 前端发送登录请求到后端
- 后端调用认证中心验证
- 认证中心查询MySQL验证用户
- 生成JWT Token,会话存入Redis
- 返回Token给前端
3.2 权限校验数据流
┌─────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 前端 │────>│ 后端 │────>│ 权限拦截器 │────>│ Redis │
│ 请求API │ │ Gateway │ │ │ │ (权限缓存) │
└─────────┘ └─────────────┘ └──────┬──────┘ └──────┬──────┘
│ │
│ 缓存未命中 │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 业务处理 │<────│ MySQL │
│ │ │ (权限数据) │
└─────────────┘ └─────────────┘流程说明:
- 前端请求携带JWT Token
- Gateway验证Token有效性
- 权限拦截器查询用户权限
- 优先从Redis缓存读取
- 缓存未命中查询MySQL
- 写入缓存并返回权限结果
- 有权限则执行业务逻辑
3.3 组织架构数据流
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 管理员 │────>│ 后端 │────>│ MySQL │
│ 修改组织 │ │(SpringBoot) │ │ (主数据) │
└─────────────┘ └──────┬──────┘ └──────┬──────┘
│ │
│ 异步更新 │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Redis │ │ 外部系统 │
│ (缓存刷新) │ │ (ERP/OA同步) │
└─────────────┘ └─────────────┘流程说明:
- 管理员修改组织架构
- 后端写入MySQL主数据
- 异步刷新Redis缓存
- 异步同步到外部系统(ERP/OA)
4. 数据存储策略
4.1 MySQL数据存储
| 数据类型 | 存储方案 | 说明 |
|---|---|---|
| 用户基础信息 | MySQL主表 | 用户名、密码、状态等 |
| 组织架构 | MySQL树形表 | 部门、岗位、关系 |
| 权限配置 | MySQL关系表 | 角色、菜单、权限关系 |
| 操作日志 | MySQL分表 | 按时间分表,定期归档 |
| 系统配置 | MySQL配置表 | 参数、字典数据 |
4.2 Redis缓存策略
| 缓存类型 | Key设计 | 过期时间 | 说明 |
|---|---|---|---|
| 用户会话 | session:{token} | 30分钟 | JWT会话存储 |
| 用户权限 | permission:{userId} | 10分钟 | 权限数据缓存 |
| 组织架构 | org:tree | 5分钟 | 部门树缓存 |
| 字典数据 | dict:{type} | 1小时 | 系统字典缓存 |
| 登录失败 | login:fail:{username} | 15分钟 | 防暴力破解 |
4.3 缓存一致性
Cache-Aside模式:
读取数据:
1. 先读缓存
2. 缓存命中返回
3. 缓存未命中读数据库
4. 写入缓存
写入数据:
1. 先写数据库
2. 删除缓存(或更新缓存)5. 数据同步方案
5.1 与ERP系统同步
| 同步方向 | 数据类型 | 同步方式 | 频率 |
|---|---|---|---|
| ERP → 本系统 | 员工基础信息 | API接口 | 实时 |
| ERP → 本系统 | 部门信息 | API接口 | 实时 |
| 本系统 → ERP | 用户状态 | 消息队列 | 实时 |
5.2 与OA系统同步
| 同步方向 | 数据类型 | 同步方式 | 频率 |
|---|---|---|---|
| OA → 本系统 | 审批流程 | API接口 | 实时 |
| 本系统 → OA | 权限变更 | 消息队列 | 实时 |
6. 数据安全
6.1 敏感数据处理
| 数据类型 | 处理方式 | 说明 |
|---|---|---|
| 密码 | BCrypt加密 | 单向哈希,带盐值 |
| 手机号 | 脱敏存储 | 中间4位掩码 |
| 身份证号 | 加密存储 | AES加密 |
| 操作日志 | 全量记录 | 包含操作人、时间、IP |
6.2 数据备份
| 备份类型 | 频率 | 保留周期 | 存储位置 |
|---|---|---|---|
| 全量备份 | 每日 | 30天 | 异地存储 |
| 增量备份 | 每小时 | 7天 | 本地存储 |
| Binlog | 实时 | 7天 | 本地存储 |
7. 下一步行动
- [ ] 设计数据库表结构(ER图)
- [ ] 配置Redis缓存策略
- [ ] 实现数据同步接口
- [ ] 制定数据安全规范
- [ ] 配置数据备份方案
文档版本历史
| 版本 | 日期 | 修改内容 | 修改人 |
|---|---|---|---|
| 1.0 | 2026-03-10 | 初始版本 | 系统架构师 |
