模块四
设计千万级学生管理系统的考试试卷存储方案
【作业要求】 基于模块 4 第 6 课的估算结果和 Redissentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redissentinel 集群的服务器数量和性能
已有的性能估算:
1、每门考试的题目 20 判断题、20 选择题、4 道大题(答案 200 字以 内);
2、请求试卷:1000 万* 20(课)/20(周末不考试)/4(每天 4 堂考试)/1 分钟=250 万请求/分钟≈ 5 万/每秒。
性能估算:
每个专业每年级有 10 人到 500 人,平均 150 人,试卷 1000 万*20/150=140 万份;
读取性能:
每张试卷,约 20K 文字,20M 图片:
【20*100 字+20*(100 字+4.5 选项*22 字)+4*150 字=4600 字=5000 字=15K;
图片大约 20 张,按 20M 算;图片链接:20*200 字符=4K】
文字:140 万*20K=1400*20M=28G,(压缩估计可以减少一半,留做冗余)图片:28T
试卷本身用单机可以存储,用主备复制架构
图片用 HBase 集群的分片架构
写入性能:
试卷一般是老师提前录入的,不需要考虑写入的高性能
图片设计:
【数据结构设计】 Key:学校 ID+专业年级 ID+试卷编号 ID+pic。
ColumnFamily:test。
Column:pic。
【读写分析】 1. 下拉试卷,直接按照 key 读取即可;应用层进行缓存。
试卷设计:
【数据结构设计】 Key:学校 ID+专业年级 ID+试卷编号 ID。
ColumnFamily:test。
【读写分析】 1. 下拉试卷,直接按照 key 读取即可;应用层进行缓存。
最大的 QPS 为请求试卷,5 万/s,1 台 redis 就可以支撑
redis sentinel 集群至少 3 个 sentinel 节点,3 个 redis 数据节点,因此 redis 服务器的数量至少 6 台
redis3 个数据节点,1 主 2 从读写分离,并发读的能力约 15 万左右,达到性能要求。
评论