写点什么

千万级学生管理系统的考试试卷存储方案

用户头像
颜培攀
关注
发布于: 2021 年 05 月 23 日

背景

1000 万学生,每个学期 20 门课,每课每年考 2 次试。没次考试 20 道判断题,20 道选择题,4 道大题。

性能估算

请求试卷:1000 万* 20(课)/20(周末不考试)/4(每天 4 堂考试)/1 分钟=250 万请求/分钟≈ 5 万/每秒

提交试卷:提交试卷:1000 万* 20(课)/20(周末不考试)/4(每天 4 堂考试)/30 分钟=1700/每秒

存储系统

沿用现有存储系统: Redis Sentinel


考试试卷存储方案设计

1. 试卷

数据结构采用 String,Key:学校 ID + 试卷 ID -> 试卷内容

映射关系 Hash:学校 ID -> 学生 ID -> 试卷 ID

2. 答卷

数据结构采用 Hash,Key:学校 ID + 试卷 ID -> 学生 ID -> 答卷内容

3. 读写流程

  • 老师提交试卷,试卷内容保存到 Redis (String 学校 ID + 试卷 ID -> 试卷内容),并推送给每个学生(学校 ID -> 学生 ID -> 试卷 ID)

  • 学生登录考试系统(学生 ID,学校 ID),首先获取试卷 ID(Hash 学校 ID -> 学生 ID -> 试卷 ID),然后获取试卷内容(String 学校 ID + 试卷 ID -> 试卷内容),并开始进行答题

  • 答题交卷(Hash 学校 ID + 试卷 ID -> 学生 ID -> 答卷内容 )

4. 服务器数量和性能

Redis 单机性能越在 50K/s 左右,考虑高可用,可采用 2-3 台服务器

用户头像

颜培攀

关注

还未添加个人签名 2011.09.16 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统的考试试卷存储方案