模块四作业 -redis 存储方案设计 - 学生考试试卷
数据结构设计
【试卷内容-数据结构设计】
Key:学校 ID + 年级 ID+科目 ID + 试卷 ID。
Value type:String 主要存储试卷内容
value:content 试卷题目及信息, 其中 content 是 JSON 格式。
【读写分析】
1 试卷题目的录入,老师把题目录入后,按照 key value 模式存储
Key 为学校 ID + 年级 ID+科目 ID + 试卷 ID
Value 为试卷内容 题目 及选项 通过 json 格式存入系统
2. 学生开始考试,通过年级科目 id,读取考试内容;
【答题内容-数据结构设计】
Key:学校 ID + 年级 ID+科目 ID + 试卷 ID + 考试 ID。
Value type:String 主要存储答题内容
value:content 答案信息, 其中 content 是 JSON 格式。
【读写分析】
1 答题内容的保存,按照 key value 模式存储
Key 为学校 ID + 年级 ID+科目 ID + 试卷 ID + 考试 ID
Value 为答题内容通过 json 格式存入系统
2. 老师阅卷,通过学校 ID + 年级 ID+科目 ID + 试卷 ID + 考试 ID,读取答题内容;
保存阅卷内容,对、错,在保存时,录入正确答案
保存成绩
3 学生查看成绩
通过学校 ID + 年级 ID+科目 ID + 试卷 ID + 考试 ID,读取阅卷内容 结果 及 成绩
TPS 需求统计
登录统计
假设考试每个学生访问 1 次,个别学生会登录几次,冗余系数设置为 1.5(即平均每个学生登录 1.5 次),登录的次数就是 1000 万 *1.5 = 1500 万,考虑到考试一般是提前几分钟,设定时间为 10 分钟(在 10 分钟内,所有的学生都登录)
,因此登录 TPS 要求为: 1500 万/(10 * 60) = 2.5 万/s。
读取试卷统计
假设考试每个学生访问 1 次,个别学生会访问几次,冗余系数设置为 1.1(即平均每个学生访问 1.1 次),访问的次数就是 1000 万 *1.1 = 1100 万,考虑到考试一般同时访问,设定时间为 5s(在 5 秒内,所有的学生都读到试卷内容)
,因此登录 TPS 要求为: 1100 万/(5) = 220 万/s。
试卷提交统计
假设考试每个学生访问 1 次,冗余系数设置为 1.001(即平均每个学生提交 1.001 次),访问的次数就是 1000 万 *1.001 = 1001 万,考虑到考试一般同时访问,很多同学可能提前交卷,设定时间为 25s(在 25 秒内,所有的学生都提交试卷内容)
,因此登录 TPS 要求为: 1001 万/(25) = 40.04 万/s 再冗余些 按照 41 万。
综合得
需要满足 读 220 万/s 写 41 万/s
Redis 单机服务器得性能为单机 TPS 5~10 万。
按照 10 万 计算需要 主从读写分离从库,读需要 22 台单机服务器写主 5 台,
为实现 1 主 2 从,即 11 台主 22 台从,物理主机需要 11 台,每台主机交叉部署
每台主机部署 1 主 2 从。
评论