Bootstrap

模块四 - 千万级学生管理系统考试试卷存储方案

【要求】

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

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

  • 设计具体的读写流程;

  • 对照模块四第六课的性能估算结果,计算Redis Sentinel 集群的服务器数量和性能;

【参考文档】

https://redis.io/topics/sentinel

业务场景

  • 学生预估为1000w,假设平均分布在4000个学校中,每个学生平均一学期20门课,每门学科每年2次考试;

  • 考试采取机考的方式 ,每门考试的为20判断题,20选择题,4道大题(答案200字以内),试卷查询QPS为5w/s;

  • 考试结果永久保存,在校学生能够看到自己以往的考试结果;

试卷数据结构

key:由学校id+年份+学科id组成;

value: 题目JSON格式的集合;

题目:主要字段包括学科id,题号,类型,题目,选项,参考答案;

读写流程

写流程

读流程

性能需求

假设每年每个学校的同一科上试卷均不相同,redis中只保存一学期试卷,其中:

平均每份试卷内容为30KB,每年试卷总数=4000(学校)*20(科)*30KB≈2.3GB,考虑一定的冗余,则服务器内存设计为4GB。

根据官网参考资料https://redis.io/topics/benchmarks ,单机即可满足5w/s的QPS,则可设计为3台Redis服务器组成集群即可。