写点什么

华仔架构训练营作业(模块四)

发布于: 2021 年 05 月 23 日

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

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

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

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

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

【提示】性能可以有一定冗余如果对 Redis sentinel 不熟悉,请参考官方文档: https://redis.io/topics/sentinel

审题

1.数据存储选用 Redis sentinel 做数据存储

2.服务对象千万学生

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

4.需要进行性能估算,服务器数量和性能可以有一定的冗余

存储选择-Redis sentinel

1.估算性能需求

用户量预估

1000 学生

用户行为建模

考试试卷获取

学生试卷提交

阅卷(老师阅卷、机器阅卷)

存储量

每门 20 判断、20 选择、4 大题

试卷:20 课*AB 卷*1kb=40kb

在校学生答案:1000 万*20(课)*2(期末期中)*1kb(40+200*4*2)*2 学期*3 年考试≈2.4T

离校学生:0.6T

学生信息和试卷结果存储的关系以及考试聚合成绩结果:层级学校->专业>年级->学生 预估 10GB 内存

性能需求计算

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

提交试卷:1000 万*20(课)/20(周末不考试)/4(每天 4 门考试)/30 分=1700/每秒

机考阅卷:1000 万*20(课)/20(周末不考试)/4(每天 4 门考试)/非考试期间 8 小时≈87/每秒

汇总

1.在校考试存储:2.4T

2.离校考试结果存储:0.6T

3.请求试卷 TPS:5w/s

4.提交试卷 TPS:1700/s

5.阅卷 TPS:87/s

2.选择存储系统

压力在试卷的读取

Redis sentinel 试卷内容

历史数据结果保存在 mongodb

3.设计存储方案

试卷使用 redis 的 String 数据结构(key 试卷编号,value 试卷内容)

答案使用 redis 的 Hash 存储数据结构(key 学生编号_学科编号_其他)

嵌套聚合关系 redis 使用 set 数据结构存储

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

  • Redis sentinel 3 台,保证自身高可用

  • Redis 1 主 2 从 共 3 台, 每台内存配置 16GB


用户头像

还未添加个人签名 2019.05.12 加入

还未添加个人简介

评论

发布
暂无评论
华仔架构训练营作业(模块四)