写点什么

模块四

发布于: 14 小时前

考试试卷存储方案

试卷分析

考试试卷的题型分为判断题、选择题、简答题,一般试卷会安装判断题、选择题、简答题的顺序来进行出题,各个题型内部一般按照由易到难的顺序进行出题,题目不能重复。所以在题型部分采用 hashtable 数据结构,key 为题型,value 为题型对应的题目列表,由于题型内部要按照由易到难的顺序进行出题,所以 value 部分采用 sorted set 数据结构,按照难易程度进行排序。由于 redis 不支持数据结构嵌套,所以使用试卷 ID+题型为 key,value 为题型对应的试题有序 set。

数据结构设计

试卷 ID+判断题:(题目 1,题目 2,题目 3 …)

试卷 ID+选择题:(题目 1,题目 2,题目 3 …)

试卷 ID+简答题(题目 1,题目 2,题目 3 …)

读写分析

老师生成试卷

老师可以根据课程生成考试,一般会按照题型的顺序进行试卷生成,并将试卷保持到 redis 中。

学生请求试卷

开始考试之后,学生会登录到考试页面请求考试题目,考试模块会根据当前考试的 ID 请求对应的试卷,按照判断题、选择题、简答题的顺序返回给前端页面,前端页面会缓存当前考试题目,页面刷新或者重开不需要再次请求考试题目。

考试性能估算

1. 在校学生考试结果存储:2.4T;

2. 离校学生考试结果存储:每年增长 0.6T;

3.  试卷请求 QPS :5 万/s;

4.  提交试卷 TPS :1700/s。

 

假设平均每学期每学科考两次试,每个学生每学期修 20 门课,一次考试按照 20 个判断题,20 个选择题,4 个简答题来计算,每个题目正文平均为 60 个字符。

每次试卷请求大小 (20 + 20 + 4)* 60 = 2640

每秒请求数据大小  2640 * 50000 = 132Mbps

每年试卷存储大小  2 * 20 * (20 + 20 + 4)* 60 = 105600

 

Redis 单机性能量级:TPS 大概为 8 万/秒,QPS 大概为 10 万/秒

 

从估算的请求数据大小、qps 来看单机也可以满足性能要求,由于试卷一般都是提前生成,所以可以不考虑写入的情况,但是考试一般时间较短,需要考虑高可用防止出现单节点故障,所以可以考虑 redis sentinel 部署模式,让 Sentinel 来监控 redis 集群实例的状态,并提供自动故障迁移功能。

 

Redis sentinel 部署架构


发布于: 14 小时前阅读数: 4
用户头像

还未添加个人签名 2020.05.22 加入

还未添加个人简介

评论

发布
暂无评论
模块四