项目总体架构
SurveyKing Pro 是一个基于现代 Web 技术栈构建的企业级问卷调研平台,采用前后端分离架构,支持高并发、高可用的业务场景。
🏗️ 系统架构图
🔄 技术架构分层
1. 前端层 (Frontend Layer)
- 技术栈: React + TypeScript + Ant Design
- 框架: UMI 框架
- 状态管理: 自定义状态管理
- 构建工具: UMI 内置构建
- 代码质量: ESLint + Prettier
2. 接入层 (Gateway Layer)
- 负载均衡: Nginx(可选)
- 静态资源: CDN 加速
- SSL/TLS: HTTPS 支持
3. 应用层 (Application Layer)
- 框架: Spring Boot 3.x
- 架构: 单体模块化架构
- 安全: Spring Security + JWT
- 缓存: Redis
- 消息队列: 基于 Redis 实现
- 定时任务: Quartz 集群模式
- 文件处理: EasyExcel + 多种存储支持
4. 数据层 (Data Layer)
- 关系型数据库: MySQL(主要数据存储)
- 缓存: Redis(缓存 + 消息队列)
- 对象存储: 支持 S3、MinIO、阿里云 OSS、腾讯云等
- 数据操作: MyBatis Plus
5. 基础设施层 (Infrastructure Layer)
- 监控: 内置监控组件(链路追踪、日志服务、指标收集)
- 部署: 支持传统部署和容器化部署
- 文件存储: 多种存储方式支持
📊 数据流向图
🎯 架构特点
1. 高可用性
- 采用模块化架构,模块间松耦合
- Redis 缓存减少数据库压力
- 支持集群部署和负载均衡
- 内置监控和故障诊断
2. 高性能
- 前端 CDN 加速,静态资源缓存
- Redis 缓存优化,提升响应速度
- 数据库连接池,连接复用
- 异步处理,基于 Redis 消息队列解耦
3. 可扩展性
- 水平扩展,支持多实例部署
- 模块化设计,易于功能扩展
- 自定义 Starter 组件,灵活配置
- 多种存储方式支持
4. 安全性
- JWT 令牌机制,无状态认证
- RBAC 权限控制,细粒度授权
- 数据加密传输,HTTPS 协议
- 审计日志,操作记录追踪
📦 模块划分
核心业务模块
- surveyking-module-system: 系统功能模块,包含用户管理、权限控制、部门管理等
- surveyking-module-survey: 问卷功能模块,包含问卷创建、编辑、发布、答题等
- surveyking-module-infra: 基础设施模块,包含文件管理、数据字典、短信邮件等
- surveyking-module-report: 报表打印模块,包含报表生成、导出、打印等
技术框架组件
- surveyking-spring-boot-starter-web: Web 封装,全局异常、访问日志
- surveyking-spring-boot-starter-security: 认证授权,基于 Spring Security
- surveyking-spring-boot-starter-mybatis: 数据库操作,基于 MyBatis Plus
- surveyking-spring-boot-starter-redis: 缓存操作,基于 Redis + Redisson
- surveyking-spring-boot-starter-mq: 消息队列,基于 Redis 实现
- surveyking-spring-boot-starter-job: 定时任务,基于 Quartz
- surveyking-spring-boot-starter-file: 文件客户端,支持多种存储方式
- surveyking-spring-boot-starter-excel: Excel 导入导出,基 于 EasyExcel
业务组件
- surveyking-spring-boot-starter-biz-sms: 短信客户端,对接阿里云、腾讯云
- surveyking-spring-boot-starter-biz-social: 社交客户端,微信、钉钉等授权
- surveyking-spring-boot-starter-biz-weixin: 微信客户端,公众号、开放平台
- surveyking-spring-boot-starter-biz-operatelog: 操作日志记录
🔧 部署架构
单机部署
特点:
- 部署简单,运维成本低
- 适合中小规模应用
- 支持 Docker 容器化部署
- 状态存储在 Redis,便于扩展
集群部署
特点:
- 高可用性,支持故障转移
- 水平扩展,可动态增减节点
- 状态存储在 Redis,应用无状态
- 支持读写分离和缓存优化