写点什么

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

作者:家有两宝
  • 2023-06-21
    四川
  • 本文字数:499 字

    阅读完需:约 2 分钟

一、考试试卷数据

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.读取考试题和提交答案


用户头像

家有两宝

关注

还未添加个人签名 2023-05-15 加入

还未添加个人简介

评论

发布
暂无评论
第四课 设计千万级学生管理系统考试试卷存储方案_架构训练营_家有两宝_InfoQ写作社区