模块四
设计千万级学生管理系统的考试试卷存储方案
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
【提示】
1. 性能可以有一定冗余。
2. 如果对 Redis sentinel 不熟悉,请参考官方文档:https://redis.io/topics/sentinel。
【数据结构设计】
key:学校 ID+年份+科目 ID+试卷 ID
value:list,list 内为 json 格式题目内容
【读写流程】
试卷平时存储在 mysql 或者 hdfs 等文件式存储中,在考试开放之前通过 key 加载到 redis 集群中,redis 集群完成主从复制。
考试开始时,客户端或浏览器调用服务端接口,通过计算节以及对应的 key 取出对应的考试 Json 串解析,并加载到前端。
【性能估算】
读写要求:
TPS = 5w/s,Redis 单机单机 TPS 5 - 10 W 已能满足需求
存储要求:
假设 500 个学校,每张试卷 20KB
500(学校)*20(门课)*2(考试次数)*2(学期)*20KB ≈ 800M
假设每 3 年更新一轮试卷,总存储量在 2.5G 内存
搭建 Redis sentinel 集群需要三台 8G 内存机器即可满足性能及存储要求,预计能支撑 15W TPS。
评论