写点什么

架构师实战营模块四作业

用户头像
袁小芬
关注
发布于: 1 小时前

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

1.作业

1.1【作业要求】

基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:

1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构

2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)

3)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能

1.2【提示】

1、性能可以有一定冗余

2、如果对 Redis sentinel 不熟悉,请参考官方文档: https://redis.io/topics/sentinel

1.3 题目解读

1.利用模块 4 第 6 课的估算结果;

2.用 Redis sentinel 做数据存储

3.设计 Redis 存储试卷的设计结构

4.服务器数量和性能可以有一定的冗余

2.架构设计方案

2.1 存储性能估算

2.1.1 用户量预估

根据课题背景,

学生人数: 1000 万;

假设平均每个学校在校学生 1 万;

接入平台的学校数量:1000 所;

教师人数按在校学生数的 10%计算,平台在册教师人数:100 万;

每位老师平均每年出 2 份试卷(每年两学期)

 

【关键行为】

1.   出卷——试卷上传;

2.   考试——请求试卷;

2.1.2 用户行为建模和性能估算

2.1.2.1 出卷——试卷上传

假设每位老师平均每年出 2 份试卷(每年两学期),每份试卷 50 道题(20 判断题、20 选择题、10 道大题),每道题的题目 200 字以内。则每年试卷存储量为:

在校教师 100 万 * 2(两期) *100K(试卷内容) = 200G;

允许快速查询前三年的试卷(出卷时判断是否重复),一共存储 4 年的试卷,共 0.8T;

 

假设学校的考试都安排在某一个月内,老师提前一周出完卷并上传。所以,某学期的所有试卷也在一个月内上传完。上传试卷集中在上午 4 小时和下午 4 小时,因此,上传试卷:100 万 * 2(份) / 20(周末不上传)/ 8 小时 ≈3.5/S

考虑峰值 10 倍;

上传试卷的 TPS = 35 份/S

2.1.2.2 考试——请求试卷

假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,因此估算如下:

• 请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。

2.1.2.3 汇总

1、当年试卷存储:200G;

2、考虑存四年试卷:0.8T;(不考虑)

3、出卷-上传试卷 TPS:35/S;

4、考试-请求试卷 TPS:5W/S;

2.2 存储系统选择

1、分片存储;

2、压力在试卷的读取,Redis 单机可支持 5 万+的 KV 读取 QPS,考虑主从切换;

2.3 存储方案设计

1、试卷使用 redis 的 String 数据结构:

1)key 试卷编号(年份+学科+学期+A/B),

2)value 试卷内容。

2、Redis 单机已可支持 5 万+的 KV 读取 QPS:

1)Redis sentinel 3 台,保证自身高可用;

2)Redis 集群主从(采用普通服务器,master 10 台,每台 64G 内存;slave10 台,每台 64G)

 

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

袁小芬

关注

还未添加个人签名 2019.04.22 加入

还未添加个人简介

评论

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