设计千万级学生管理系统的考试试卷存储方案
1.计算 Redis sentinel 集群的服务器数量和性能
学生的人数为 1000 万。假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,因此估算如下:
请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。
单机 redis TPS 5~10 万 QPS 到百万级别。所以一台就可以支持性能 要三台服务器做 redis sentinel 集群,一主二从性能足够。
2.完善 Redis 的数据结构设计
使用 String 类型数据结构。
key:课程 id+试卷 id。
value:用 String 类型 整个试卷内容是 json.
3.设计具体的读写流程
试卷的 crud 操作,都是对整个试卷的操作,试卷的属性有 id,课程 id,试题(题号,类型,题目标题,选项),新增和修改时业务层对试卷的题目内容做 json 化处理,要保证有序性。
新增:根据课程 id 和试卷 id 作为 key,试卷内容 json 为 value 进行新增。
更新:根据 key 更新 value 的试卷内容 json 无需扫描。
删除:根据 key 直接删除 无需扫描。
复杂度都是 O1. 实现和操作都不复杂。
评论