写点什么

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

作者:Geek_92ba6f
  • 2022-11-17
    天津
  • 本文字数:852 字

    阅读完需:约 3 分钟

一、业务需求

1.对千万级学生管理系统设计试卷存储方案;

2.采用 Redis Sentinel 设计方案并明确数据结构,设计具体的读写流程;

3.计算 Redis Sentinel 集群的服务器数量和性能;

 

二、千万级学生管理系统的考试性能需求估算

1.在校学生:1000 万* 20(课)* 2(考试次数)* 1000(答案)* 2(学期)* 3(只有前三年考试)= 2.4T;

2.离校学生:每年 250 万,存储量为 0.6T;

3.请求试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈5 万/每秒;

4.提交试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 30 分钟= 1700/每秒。

 

三、Redis 数据结构选型

1.试卷数量相对较少,试卷存储可以采用 MySql 关系数据库,存储试卷信息以及关联学校、考试科目等信息。

2.Redis 存储数据类型可以采用简单的 String 类型即可满足试卷的临时存储,key=学校 ID+专业 ID+试卷 ID,value=试卷内容(JSON 格式);也可代用 Hash 类型,key=学校 ID+专业 ID+试卷 ID,value=试卷对象,可占用更少的内存;

3.考试结果也可采用 Hash 类型存储对应信息。

 

四、考试读写流程

1.因试卷数量相对较少且有关联关系,所以先将试卷存储在 MySql 中,Mysql 架构单独考虑考试业务本身,采用主备或主从模式即可;如考虑整个学生管理系统可采用分库分表架构;

2.考虑到考试开始时请求试卷的高 QPS,所以将试卷信息预先读取到 Redis 中,从 Redis 中读取试卷信息,保证很高的读性能;

3.学生提交答案也可先保存在 Redis 中,保证较高的 TPS;

4.最终把考试结果等信息存储到 HBase 中,选型 HBase 是考虑到考试结果信息相对较大,而且每年累计增加,并且查看考试结果业务也相对简单。

 

五、Redis Sentinel 的计算性能

1.单机 redis 可满足 5w-10w 的 QPS;

2.采用 Sentinel 模式为了保证系统高可用;

3.一般 Sentinel 模式至少 3 节点,所以搭建 3 节点 Redis Sentinel 集群即可满足需求。

4.Redis 数据库 3 节点(1master、2slave),主节点加载试卷信息,3 个节点可同时读取,保证考试时的高 QPS;

5.Sentinel 模式主要监控 Redis 节点,所以搭建一个 3 节点的 Sentinel 保证运行稳定即可。

用户头像

Geek_92ba6f

关注

还未添加个人签名 2022-09-20 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统设计试卷存储方案_Geek_92ba6f_InfoQ写作社区