模块四课后作业 - 设计千万级学生管理系统的考试试卷存储方案
作业要求
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
作业内容
一、试卷存储-redis 数据结构设计
1、试卷整体信息
【数据结构设计】
Key:String,学校 ID + 课程编号(schoolId + subjectNo)
Value:String,采用 JSON 字符串,方便扩展
【读写分析】
(1)、老师在界面上设计试卷时,需要选择学校、课程编号、规则、考试说明等信息,提交后组装成 JSON 字符串,保存到 redis,JSON 字符串字段可支持扩张。
(2)、学生打开试卷,从 redis 中读取 JSON 字符串,展示在界面
2、试卷题目内容
【数据结构设计】
key:String,学校 ID + 课程编号 + 试卷编号(schoolId + subjectNo + paperNo)
value:hash,无序,不重复,采用 hash 结构清晰,数据定位快
hash key:String,题目类型 + 题目编号(type + qustionNo)
hash value:String,采用 JSON 字符串
格式如:{“title”:{…},“type”:1,“option”:{…},“rule”:{…},…}
【读写分析】
(1)、老师在界面上设计试卷时,支持手工输入题目或从题目中选择,确定提交后系统会组装成 JSON 信息,保存到 redis。字段包括:题目类型、题目编号、题目头、题目选项、题目规则等。
(2)、学生打开试卷,从 redis 中读取 JSON 字符串,界面上根据题目编号填充相应 JSON 信息渲染成考试试卷。
二、试卷读写流程
(1)、老师录入考题或从题库中选择,试题准备好后 json 形式提交到后台,后台系统校验格式后存储到 redis sentinel 集群;
redis sentinel 集群,存储 K,V 数据后返回结果到后台系统,后台系统返回结果到老师界面。
(2)、学生打开试卷调用后台系统,后台系统向 redis 读取 k,v 数据,后台处理并组装成 json 字符串向前端输送,学生界面渲染出试卷。
三、试卷存储-Redis sentinel 集群的服务器数量和性能
【服务器数量】
1 主、2 从、3 哨兵
【服务器性能】
3 台数据节点服务器,redis 单台性能可达到 10W+,3 台 QPS 可到 30W+,足够满足 5w 的 QPS 需求;
3 台哨兵服务器提供监控,确保系统高可用。
评论