第四课 设计千万级学生管理系统考试试卷存储方案
一、考试试卷数据:
1、考试题,
1.1、用 hash 保存,key 保存为年级-科目,value 大题,value 下面是小题,下面再分科目,用 Json 字符串保存最下一层题,数据个数量少,但值比较大,并发量大,5w/s,保存的数据量大。
1.2、设计的原因:key 值的 hash 槽分布应该说比较均匀,value 是大题,可以实现分页读取,如果一次读取所有题目的话,性能及网络 io 上可能有点问题,redis 的小 key 的单机性能一般为 5w-10w,这里达到 2w 万应该没有问题。
1.3、我的结论:2 组 1 主 2 从的 sentinel 可以达到要求的性能,那么 2 组 sentinel 就最高能达到 12w/qps
2、学生提交的答案
2.1、用 List 和 hash 都可以保存数据,我用 hash 保存吧,hash key 用年级-班级-姓名,理由与 1.1 类型
2.2、主要是提交,并发量为 1700qps/s 对于 redis 是小意思,不用考虑,主要是保存数据,
2.3、试卷提交的大小每次 1M,那么一小时内的数据量最大为 1700/s*1000(答案大小)*3600s=6G,假设每个 redis 内存中可以保存 10G 即可,rdb 可以保存在硬盘中,假设硬盘为 10t,这里假设保存 8t,那么两组 sentinel 就是 16T,可以保存 30 年的考试数据
最终的设计 redis 容量为:使用两组 redis sentinel,各内存用 10G,硬盘 10T。
二、序列图
1.读取考试题和提交答案
评论