学生试卷 & 答题结构 redis 存储
性能分析
请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒
提交试卷: 1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 30 分钟 = 1700/每秒
数据结构设计
考虑到并发量在 5 万/秒的级别,试卷存储采用 redis 进行存储,提高响应效率
试卷存储
考虑到获取试卷时基本为一次性获取所有的试卷内容,因此使用 redis 字符串结构进行存储,其中
key:Paper + 学校 ID + 学院 ID + 科目 ID + 试卷 ID
value:试卷的具体内容(序列化存储)
答题结果数据
使用 redis 字符串结构进行存储,其中
key:Paper + 学校 ID + 学院 ID + 科目 ID + 试卷 ID + 学生 ID
value:题号 + 答题内容,构造一个个 key/value 结果后,再整体序列化存储
Redis 读写流程
Redis 架构设计
采用 Redis sentinel 集群架构模式,按照标准的 sentinel 结构,需要部署 6 台机器,3 台部署 sentinel 节点,3 台部署 redis 节点,redis 节点采用一主两从的模式,考虑到单台 redis 可以支撑 5~10 万/s 请求,且提交试卷的 qps 相对于获取试卷的 qps 而言并不算高,因此可以直接使用标准的 6 台服务器进行部署即可
当然这其中还要考虑服务器的性能,因此需要按照该架构做好压力测试,根据测试结果调整服务器配置
评论