写点什么

架构实战营模块四作业

用户头像
王晓宇
关注
发布于: 1 小时前

一、作业内容:

使用 redis 设计千万级学生管理系统的考试试卷存储方案

二、估算性能:

基于模块四第 6 课的估算结果,使用 redis 需要满足存储的数据如下:

2.1 试卷存储量,每学期 20 门课,每门课每学期 2 次考试,每年两个学期,一共三年,则每个学生三年共参加 20*2*2*3 = 240 次考试。

假设每个试卷 512K 大小,试卷存储量为:

240*0.5M= 120M;

2.2 试卷结果存储量,按模块四第 6 课的估算结果,仅考虑在校学生,试卷答案存储量为:

2.4T;

2.3 同样,按模块四第 6 课的估算结果,对数据访问的性能估算为:

请求试卷 5 万 QPS, 提交试卷 1700TPS。

三、数据结构设计

3.1 试卷存储数据结构设计

使用 redis String 数据结构

key: 课程号 + 试卷编号(根据场景,每门课程每次考试都有唯一的试卷编号)

value: 试卷内容

3.2 试卷结果存储数据结构设计

使用 redis hash 数据结构

key: 课程号 + 试卷编号

hashKey : 学校 ID + 班级 ID + 学生 ID

hashValue: 试卷答题结果(含评分结果)


四、读写流程

4.1 请求试卷时,按照 “课程号 + 试卷编号”的 KEY 向 redis 发起请求试卷;

4.2 提交试卷时,按照 “课程号 + 试卷编号”的 KEY 和“学校 ID + 班级 ID + 学生 ID”的 hashkey 提交答题结果;

4.3 老师评分时,按照“课程号 + 试卷编号”的 KEY 和“学校 ID + 班级 ID + 学生 ID”的 hashkey 提取答题结果,评分后更新数据。


五、估算集群服务器数量及性能

5.1 估算方式:

1、使用三台 sentinel 独立服务器;

2、存储分析:试卷存储量 120M 太小忽略不计,主要考虑试卷结果存储量 2.4T(按按模块四第 6 课的估算)

按 240 次考试(见 2.1 估算),则每门课每次考试的考试结果存储空间为 2.4T/(20*2*2*3) = 10G。

按一台 redis 服务器的内存为 64G 计算,每台 redis 可以存储 6 次考试结果数据,240 次考试需要 40 台 redis 服务器。同时考虑存储的高可用,每台 redis 服务器增加一个副本,共 80 台 redis 服务器(64G)。

小结:使用 40 台内存为 64G 的 redis 服务器;

3、读写性能分析:

请求试卷性能分析:每个 redis 服务器都可以部署试卷(容量较小,仅 120M),80 台 REDIS 服务器同时提供试卷读取服务,5W QPS 分布到 80 台服务器,每台 redis 承担 600 多 QPS,毫无压力。

提交试卷性能分析:每台主 redis 负责提供写服务。一台常规的 redis 服务器可提供 1W 以上的 TPS 访问,1700TPS 的性能要求也可以满足。

5.2 存储架构

存储架构图如下:


说明:

1、每个 redis 服务器都存储试卷数据,每个 redis 服务器都可提供试卷请求服务;

2、每组 redis 服务器存储 6 次考试的结果,每个主 redis 服务器可提供试卷提交服务和评分提交服务器。

发布于: 1 小时前阅读数: 7
用户头像

王晓宇

关注

还未添加个人签名 2018.07.08 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块四作业