You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
unilife/文档/UniLife软件体系设计.md

135 lines
6.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# UniLife 软件体系结构设计文档
## 1. 项目概述
- **项目名称**UniLife 学生论坛平台
- **设计目标**:构建一个面向大学生的集社交、学习资源管理、课程规划与 AI 辅助学习为一体的综合性论坛系统,具备良好的可扩展性、可维护性和高并发响应能力。
## 2. 架构设计原则
- **模块化**:系统划分为多个功能清晰、职责单一的模块,便于维护与扩展。
- **前后端分离**:使用 RESTful API 进行前后端通信,提高开发效率和系统灵活性。
- **高内聚低耦合**:模块之间通信通过接口完成,避免强依赖。
- **可扩展性**:为 AI 功能、个性化推荐等提供预留拓展接口。
- **安全性**:用户权限管理、数据加密、操作审计等策略保障数据安全。
## 3. 系统架构模式与选择理由
### 3.1 架构模式MVC 模式 + 客户端/服务器模式 + 发布/订阅模式
-**MVC 模式Model-View-Controller**
- 用于组织后端服务的内部结构。
- 后端采用 Controller - Service - Repository 三层结构,符合 MVC 设计思想。
- Controller 负责处理请求和响应Service 层承担业务逻辑Repository 负责数据库交互,结构清晰,易于维护。
-**客户端/服务器模式Client/Server**
- 前端 Vue 应用作为客户端,后端 Spring Boot 应用作为服务器,二者通过 REST API 进行通信。
- 前后端职责分离,支持并行开发和部署灵活性,结构典型符合 C/S 模式。
-**发布/订阅模式Publish/Subscribe**
- 系统中的通知功能采用发布/订阅模式。
- 用户行为如发帖、评论、点赞、任务提醒等事件被发布后,通知模块订阅并推送相应消息(如站内信、提醒标记等)。
- 可通过 Kafka 或 RabbitMQ 等消息中间件实现解耦通信与异步处理,提升系统响应能力。
### 3.2 架构模式优势
- **关注点分离**MVC 提高系统可维护性和可测试性。
- **开发协同效率高**C/S 模式支持前后端分离开发,提高并行开发效率。
- **高扩展性**:发布/订阅模式便于异步通知机制和功能拓展(如将通知扩展为邮件、站内信等)。
- **性能优化能力强**:通过异步事件处理减轻主业务压力,适应高并发场景。
## 4. 系统架构总览
### 4.1 技术选型
- 前端框架Vue.js + Vite + pnpm + Element Plus
- 后端框架Spring Boot (Java)
- 数据库MySQL
- 缓存系统Redis
- AI 支持GPT-4 API / LLaMA2 13B可选
- 接口通信REST API + gRPCAI 流式通信)
- 部署方式Docker 容器化,未来支持 Kubernetes 弹性扩展
### 4.2 逻辑架构图(简要说明)
```
[前端 UI] <-> [API 网关] <-> [认证服务 | 论坛服务 | 资源服务 | 日程服务 | AI 服务] <-> [数据库 / 缓存 / 对象存储]
```
## 5. 模块划分与职责
| 模块 | 主要职责 |
| ------------ | ------------------------------------------------------------ |
| 用户服务 | 注册/登录/权限认证/用户信息管理 |
| 论坛服务 | 发帖、评论、点赞、话题分类、私信功能含历史记录、2分钟内撤回 |
| 资源共享服务 | 上传/下载资料,资料分类、搜索、权限管理、人工审核 |
| 日程管理服务 | 课程表导入、日程整合、自定义提醒与修改 |
| AI 辅助服务 | 生成学习计划、智能提醒、个性化推荐、GPT对话支持gRPC流式接口 |
| 通知服务 | 作业提醒、系统通知、点赞/回复消息通知(建议通过消息队列异步处理) |
| 积分系统 | 行为打分、积分兑换、资源下载权限控制 |
| 管理后台服务 | 审核资源与帖子、用户管理与封禁 |
| 搜索服务 | 支持关键词搜索,课程、资源、帖子全局搜索(推荐使用 ElasticSearch |
## 6. 通信与数据流
- 前端通过 HTTP/HTTPS 与 API 网关通信
- 后端模块间采用 REST 或 RPCgRPC协议交互
- Redis 缓存热点数据
- 消息通知系统推荐采用 Kafka 或 RabbitMQ 解耦模块间消息
## 7. 数据存储结构概览
- MySQL用户、帖子、评论、资源元数据、积分、日程等
- RedisToken缓存、热门资源、课程提醒
- OSS资源上传文件存储PDF、PPT、ZIP 等)
## 8. 安全与权限设计
- 用户角色:游客、普通用户、管理员
- 所有管理员权限相同,无权限等级划分
- JWT Token 进行身份认证
- RBAC 权限控制
- 日志记录所有敏感操作
## 9. 部署架构(初期)
- 后端单体服务运行于 Docker 容器
- Nginx 反向代理并负载均衡
- 前端由 Nginx 提供静态服务
- AI 模块调用第三方 GPT API 或本地部署模型gRPC
## 10. 可扩展与演化方向
- 服务拆分为独立微服务
- 搜索系统引入 ElasticSearch
- 使用 Kafka 实现通知和任务调度解耦
- AI 服务升级为自主模型训练与部署
## 11. 设计思考说明
### 11.1 私信系统设计建议
- 建议采用 WebSocket 实现实时通信,结合 Redis 存储会话状态MySQL 持久化聊天记录
### 11.2 AI 模块设计建议
- 推荐前期使用 GPT-4 API 提供对话与推荐功能;长期可将 LLaMA2 本地化部署,通过 gRPC 提供流式学习建议与任务规划接口
### 11.3 搜索系统建议
- 推荐使用 ElasticSearch 实现全文检索,支持关键词模糊匹配、标签过滤、结果高亮等高级功能,提升搜索体验
### 11.4 积分系统建议
- 建议制定如下规则:发帖+2分上传资料+5分评论+1分下载资源需 5-20 积分不等,帖子置顶需 30 积分等,便于引导用户行为。
## 12. UML 架构图建议模型
- 用例图:展示不同角色可访问的功能模块
- 组件图:描述系统模块划分与接口依赖
- 部署图:说明各模块运行在哪些物理/虚拟节点上
- 顺序图(可选):如 AI 计划生成流程、消息通知流程等交互细节
## 13. 结语
本设计文档为 UniLife 项目的体系结构设计版本,依据当前需求分析形成。在开发推进过程中,系统结构将持续优化,确保系统稳定、高效、可维护与可扩展。