- 项目概述
- 系统架构概览
- 核心业务表结构
- 表关系与约束分析
- 数据流与业务场景
- 性能优化建议
- 故障排查指南
- 总结
项目概述
本项目是一个基于微服务架构的企业级管理系统,采用Spring Cloud微服务框架构建。系统包含多个业务模块,涵盖用户管理、权限控制、设备管理、任务调度、黑名单管理等多个核心功能领域。
项目采用MySQL作为主要关系型数据库,同时使用TDengine作为时序数据存储解决方案。整体架构遵循DDD(领域驱动设计)原则,通过清晰的模块划分实现业务解耦。
系统架构概览
Mermaid Diagram Code:
graph TB
subgraph "前端层"
UI[用户界面]
Admin[管理后台]
end
subgraph "网关层"
Gateway[API网关]
end
subgraph "业务服务层"
System[系统服务]
Device[设备服务]
Task[任务服务]
Blacklist[黑名单服务]
Launcher[启动器服务]
end
subgraph "数据存储层"
MySQL[(MySQL关系型数据库)]
TDengine[(TDengine时序数据库)]
Redis[(Redis缓存)]
end
UI --> Gateway
Admin --> Gateway
Gateway --> System
Gateway --> Device
Gateway --> Task
Gateway --> Blacklist
Gateway --> Launcher
System --> MySQL
Device --> MySQL
Device --> TDengine
Task --> MySQL
Blacklist --> MySQL
Launcher --> MySQL
Launcher --> TDengine
图表来源
核心业务表结构
用户表 (system_user)
用户表是系统的核心基础表,用于存储系统的用户信息和认证凭据。
Mermaid Diagram Code:
erDiagram
SYSTEM_USER {
bigint id PK
string username UK
string nickname
string avatar
tinyint sex
string email
string phone
tinyint status
bigint dept_id
string password
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_DEPT {
bigint id PK
string name
bigint parent_id
int sort
bigint leader_user_id
string phone
string email
tinyint status
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_USER ||--|| SYSTEM_DEPT : "所属部门"
图表来源
字段说明:
id: 用户唯一标识符,主键,自增
username: 用户名,唯一约束,用于登录
nickname: 昵称,用户显示名称
avatar: 头像URL地址
sex: 性别,字典值(1:男, 2:女)
email: 邮箱地址
phone: 手机号码
status: 用户状态,0:正常 1:停用
dept_id: 所属部门ID,外键关联部门表
password: 加密后的密码
remark: 备注信息
tenant_id: 租户编号,支持多租户隔离
业务含义:
该表承载了系统的身份认证和授权基础信息,是权限控制体系的核心数据源。
章节来源
角色表 (system_role)
角色表用于定义系统的角色权限体系,支持RBAC(基于角色的访问控制)模型。
Mermaid Diagram Code:
erDiagram
SYSTEM_ROLE {
bigint id PK
string name UK
string code UK
int sort
tinyint type
tinyint status
string data_scope
string data_scope_ids
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_MENU {
bigint id PK
string name
bigint parent_id
int sort
tinyint type
string permission
string path
string component
string icon
tinyint status
boolean visible
boolean keep_alive
boolean always_show
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_ROLE ||--o{ SYSTEM_MENU : "拥有权限"
图表来源
字段说明:
id: 角色唯一标识符
name: 角色名称,唯一约束
code: 角色编码,唯一约束,用于程序识别
sort: 显示排序
type: 角色类型,1:系统内置 2:自定义
status: 角色状态,0:正常 1:停用
data_scope: 数据范围,1:全部 2:指定部门 3:本部门 4:本部门及以下 5:仅本人
data_scope_ids: 数据范围ID集合
tenant_id: 租户编号
业务含义:
角色表定义了系统的权限边界,通过与菜单表的关联实现细粒度的权限控制。
章节来源
菜单 表用于构建系统的导航结构和权限控制基础。
Mermaid Diagram Code:
erDiagram
SYSTEM_MENU {
bigint id PK
string name
bigint parent_id
int sort
tinyint type
string permission
string path
string component
string icon
tinyint status
boolean visible
boolean keep_alive
boolean always_show
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
SYSTEM_ROLE_MENU {
bigint role_id PK
bigint menu_id PK
}
SYSTEM_USER_ROLE {
bigint user_id PK
bigint role_id PK
}
SYSTEM_MENU ||--o{ SYSTEM_ROLE_MENU : "授权"
SYSTEM_ROLE ||--o{ SYSTEM_ROLE_MENU : "拥有"
SYSTEM_USER ||--o{ SYSTEM_USER_ROLE : "拥有"
SYSTEM_ROLE ||--o{ SYSTEM_USER_ROLE : "分配给"
图表来源
字段说明:
id: 菜单唯一标识符
name: 菜单名称
parent_id: 父级菜单ID,支持多级菜单
sort: 排序字段
type: 菜单类型,1:目录 2:菜单 3:按钮
permission: 权限标识,用于接口级别的权限控制
path: 路由路径
component: Vue组件路径
icon: 图标类名
status: 状态,0:正常 1:停用
visible: 是否可见
keep_alive: 是否缓存
always_show: 是否总是显示
业务含义:
菜单表不仅定义了系统的导航结构,更重要的是通过permission字段实现了接口级别的权限控制。
章节来源
设备表 (device_info)
设备表用于存储设备的基本信息和状态管理。
Mermaid Diagram Code:
erDiagram
DEVICE_INFO {
bigint id PK
string sn UNIQ
string name
string model
string brand
string os_version
string cpu_model
string memory_size
string storage_capacity
string network_type
string ip_address
string mac_address
string location
tinyint status
bigint tenant_id
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
}
DEVICE_RUNTIME {
timestamp ts PK
string sn PK
json data
int frequency
timestamp create_time
}
DEVICE_ACTIVITY_DETAIL {
timestamp ts PK
string sn PK
string activity_name
string package_name
int duration
json extra_data
timestamp create_time
}
DEVICE_INFO ||--o{ DEVICE_RUNTIME : "产生"
DEVICE_INFO ||--o{ DEVICE_ACTIVITY_DETAIL : "产生"
图表来源
字段说明:
id: 设备唯一标识符
sn: 设备序列号,唯一约束
name: 设备名称
model: 型号
brand: 品牌
os_version: 操作系统版本
cpu_model: CPU型号
memory_size: 内存大小
storage_capacity: 存储容量
network_type: 网络类型
ip_address: IP地址
mac_address: MAC地址
location: 位置信息
status: 设备状态
业务含义:
设备表提供了设备的静态信息管理,配合时序数据表实现设备运行状态的实时监控。
章节来源
黑名单表 (blacklisted)
黑名单表用于管理需要限制访问或监控的设备或应用。
Mermaid Diagram Code:
erDiagram
BLACKLISTED_APP_KILL_RECORD {
timestamp ts PK
string data_key PK
string mac
string cpu_id
int frequency
timestamp create_time
int black_list_id
}
BLACKLISTED_CONFIG {
bigint id PK
string name
string type
string value
tinyint status
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
BLACKLISTED_APP_KILL_RECORD }o--|| BLACKLISTED_CONFIG : "关联"
图表来源
字段说明:
ts: 时间戳,主键之一,格式为YYYY-MM-DD
data_key: 数据键,由mac+cpu_id组成,复合主键
mac: MAC地址
cpu_id: CPU ID
frequency: 杀死次数
create_time: 创建时间
black_list_id: 关联的黑名单配置ID
业务含义:
该表专门用于记录APP被杀死的明细信息,支持基于MAC地址和CPU ID的组合查询和统计分析。
章节来源
任务表 (task_info)
任务表用于管理系统中的各种任务和作业。
Mermaid Diagram Code:
erDiagram
TASK_INFO {
bigint id PK
string name
string type
string cron_expression
string executor_service
string executor_handler
json params
tinyint status
tinyint cycle_type
datetime start_time
datetime end_time
int version
string remark
bigint creator
datetime create_time
bigint updater
datetime update_time
bit deleted
bigint tenant_id
}
LAUNCHER_TASK_RESULT {
timestamp ts PK
string task_id PK
string device_sn
tinyint status
json result_data
int retry_count
timestamp create_time
}
TASK_INFO ||--o{ LAUNCHER_TASK_RESULT : "产生"
图表来源
字段说明:
id: 任务唯一标识符
name: 任务名称
type: 任务类型
cron_expression: Cron表达式,用于定时任务
executor_service: 执行服务名称
executor_handler: 执行处理器
params: 任务参数,JSON格式
status: 任务状态
cycle_type: 执行周期类型
start_time: 开始时间
end_time: 结束时间
version: 版本号,用于乐观锁
业务含义:
任务表实现了灵活的任务调度和执行机制,支持定时任务和一次性任务的统一管理。
章节来源
表关系与约束分析
主要关系图
Mermaid Diagram Code:
erDiagram
SYSTEM_USER {
bigint id PK
string username UK
bigint dept_id FK
}
SYSTEM_DEPT {
bigint id PK
bigint parent_id FK
}
SYSTEM_ROLE {
bigint id PK
string code UK
}
SYSTEM_MENU {
bigint id PK
bigint parent_id FK
string permission
}
SYSTEM_USER_ROLE {
bigint user_id PK
bigint role_id PK
}
SYSTEM_ROLE_MENU {
bigint role_id PK
bigint menu_id PK
}
SYSTEM_USER ||--o{ SYSTEM_USER_ROLE : "拥有"
SYSTEM_ROLE ||--o{ SYSTEM_USER_ROLE : "分配给"
SYSTEM_ROLE ||--o{ SYSTEM_ROLE_MENU : "拥有"
SYSTEM_MENU ||--o{ SYSTEM_ROLE_MENU : "授权"
SYSTEM_DEPT ||--o{ SYSTEM_DEPT : "父子关系"
SYSTEM_USER ||--|| SYSTEM_DEPT : "所属"
图表来源
外键约束分析
系统采用了严格的外键约束来保证数据完整性:
- 用户-部门关系: 用户表通过dept_id外键关联部门表
- 菜单层级关系: 菜单表通过parent_id自关联,形成树形结构
- 角色-用户关系: 通过中间表SYSTEM_USER_ROLE实现多对多关系
- 角色-菜单关系: 通过中间表SYSTEM_ROLE_MENU实现权限分配
索引策略
Mermaid Diagram Code:
flowchart TD
IndexStrategy[索引设计策略] --> UniqueIndex[唯一索引]
IndexStrategy --> NormalIndex[普通索引]
IndexStrategy --> CompositeIndex[复合索引]
UniqueIndex --> UsernameIndex[用户名唯一索引]
UniqueIndex --> SnIndex[设备序列号唯一索引]
UniqueIndex --> RoleCodeIndex[角色编码唯一索引]
NormalIndex --> DeptParentIndex[部门父ID索引]
NormalIndex --> MenuParentIndex[菜单父ID索引]
NormalIndex --> UserDeptIndex[用户部门索引]
NormalIndex --> TaskStatusIndex[任务状态索引]
CompositeIndex --> BlacklistComposite[黑名单复合主键]
CompositeIndex --> DeviceTimeSeries[设备时序复合键]
图表来源
数据流与业务场景
用户登录流程
Mermaid Diagram Code:
sequenceDiagram
participant Client as 客户端
participant Gateway as API网关
participant System as 系统服务
participant DB as MySQL数据库
Client->>Gateway : 用户登录请求
Gateway->>System : 验证用户凭据
System->>DB : 查询用户信息
DB-->>System : 返回用户数据
System->>System : 验证密码
System->>DB : 查询用户角色
DB-->>System : 返回角色信息
System->>DB : 查询角色权限
DB-->>System : 返回权限列表
System-->>Gateway : 返回登录结果
Gateway-->>Client : 返回Token和权限信息
图表来源
设备监控数据流
Mermaid Diagram Code:
flowchart LR
Device[设备] --> Collect[数据采集]
Collect --> Parse[数据解析]
Parse --> Store[数据存储]
Store --> MySQL[关系型数据]
Store --> TDengine[时序数据]
MySQL --> Business[业务处理]
TDengine --> Analytics[数据分析]
Business --> Report[报表生成]
Analytics --> Alert[告警通知]
图表来源
任务执行流程
Mermaid Diagram Code:
stateDiagram-v2
[*] --> Created : 创建任务
Created --> Waiting : 等待执行
Waiting --> Running : 开始执行
Running --> Success : 执行成功
Running --> Failed : 执行失败
Running --> Retry : 重试执行
Retry --> Running : 重新执行
Success --> [*] : 任务结束
Failed --> [*] : 任务结束
Retry --> MaxRetry : 达到最大重试次数
MaxRetry --> Failed : 标记失败
图表来源
性能优化建议
数据库层面优化
-
索引优化
- 为高频查询字段建立适当索引
- 避免过度索引影响写入性能
- 定期分析索引使用情况
-
查询优化
- 使用EXPLAIN分析慢查询
- 优化复杂关联查询
- 合理使用LIMIT限制结果集
-
分区策略
- 对大表实施水平分区
- 基于时间字段进行分区
- 定期清理历史数据
缓存策略
Mermaid Diagram Code:
graph TB
subgraph "缓存层次"
L1[本地缓存]
L2[分布式缓存]
L3[数据库缓存]
end
subgraph "数据一致性"
CacheWrite[写缓存]
CacheRead[读缓存]
CacheInvalid[失效策略]
end
CacheWrite --> CacheInvalid
CacheRead --> CacheWrite
CacheInvalid --> CacheRead
异步处理
对于耗时操作,建议采用异步处理模式:
- 消息队列: 使用RabbitMQ或RocketMQ处理异步任务
- 批量处理: 对大量数据操作进行批量化处理
- 定时任务: 使用Quartz框架管理定时任务
故障排查指南
常见问题诊断
Mermaid Diagram Code:
flowchart TD
Problem[系统问题] --> Auth[认证问题]
Problem --> DB[数据库问题]
Problem --> Perf[性能问题]
Problem --> Data[数据问题]
Auth --> LoginFail[登录失败]
Auth --> PermFail[权限不足]
DB --> ConnFail[连接失败]
DB --> LockFail[锁冲突]
DB --> Deadlock[死锁]
Perf --> SlowQuery[慢查询]
Perf --> MemoryLeak[内存泄 漏]
Perf --> Timeout[超时]
Data --> DupKey[重复键]
Data --> NullValue[空值]
Data --> DataMismatch[数据不一致]
监控指标
建议关注以下关键指标:
-
数据库指标
- 连接数使用率
- 查询响应时间
- 锁等待时间
- 缓存命中率
-
系统指标
-
业务指标
- 用户活跃度
- 任务执行成功率
- 设备在线率
- 黑名单触发率
日志分析
Mermaid Diagram Code:
erDiagram
LOG_ACCESS {
bigint id PK
string trace_id
bigint user_id
string user_type
string application_name
string request_method
string request_url
int duration
int result_code
string result_msg
datetime create_time
}
LOG_ERROR {
bigint id PK
string trace_id
string error_code
string error_msg
string error_stack
string request_url
datetime create_time
}
LOG_ACCESS ||--o{ LOG_ERROR : "关联"
图表来源
本核心业务表结构设计体现了现代企业级应用的最佳实践:
- 规范化设计: 采用第三范式设计,消除数据冗余
- 权限控制: 实现完善的RBAC权限管理体系
- 扩展性: 支持多租户和模块化扩展
- 性能优化: 合理的索引策略和数据分区
- 监控完善: 全面的日志记录和指标监控
通过合理的表结构设计和约束管理,系统能够有效支撑复杂的业务需求,同时保证数据的一致性和完整性。建议在实际部署中根据具体业务场景进一步优化索引和查询策略,确保系统在高并发场景下的稳定运行。