Glowxq-OJ 系统架构
系统架构
┌─────────────┐
│ 浏览器 │
└──────┬──────┘
│
┌──────▼──────┐
│ 前端服务 │ Vue 3 + Nginx
└──────┬──────┘
│
┌──────▼──────┐
│ 后端API │ Spring Boot 3.x + Java 21
├─────────────┤
│ 判题服务 │ Go + Docker
└──────┬──────┘
│
┌──────▼──────┐
│ 数据存储 │ MySQL + Redis
└─────────────┘技术架构
后端架构
- 框架:Spring Boot 3.x
- ORM:MyBatis-Flex
- 认证:Sa-Token
- 缓存:Redis
- 数据库:MySQL 8.0
前端架构
- 框架:Vue 3 + TypeScript
- UI组件:Element Plus
- 代码编辑器:Monaco Editor
- 构建工具:Vite
判题架构
- 语言:Go
- 隔离:Docker 容器
- 消息队列:RabbitMQ(可选)
核心模块
业务模块
- 题目管理:题目CRUD、分类标签、难度管理
- 用户系统:注册登录、权限管理、个人主页
- 提交系统:代码提交、判题队列、结果反馈
- 竞赛系统:竞赛创建、实时排名、赛制支持
- 统计系统:提交统计、通过率分析、排行榜
判题流程
用户提交代码
↓
保存提交记录(状态:PENDING)
↓
发送到消息队列
↓
判题服务消费消息
↓
创建Docker容器
↓
编译代码 → 运行测试用例
↓
收集结果(时间、内存、状态)
↓
更新提交状态
↓
返回结果给用户安全机制
- Docker沙箱:代码在隔离容器中执行
- 资源限制:CPU、内存、时间限制
- 权限控制:基于角色的访问控制(RBAC)
- 输入验证:防止SQL注入、XSS攻击
💡 提示
更多详细的架构设计、技术选型、性能优化请访问 GitHub 项目地址 查看。