写点什么

架构训练营模块四作业

用户头像
Neil43
关注
发布于: 2021 年 05 月 23 日

千万级学生管理系统的考试试卷存储方案

一、数据结构设计

[数据结构设计]

Key: 学校 ID+考试 ID

Value:sorted set 结构,存储 test paper 试卷、result 学生答卷,其中 test paper 和 result 都是 json 格式

 

[具体方案]

Value 第 1 个位置 Set[0]存放这门考试的 test paper,一个学校某一门考试的试卷都是一样的,和学员无关;

Value 按照学员 ID 进行排序,假定学员 ID 是连续的,从第 2 个位置 Set[1]连续插入 result;

      

[读写分析]

1、 考试前老师存储试卷,直接根据 Key 插入相应的 test paper 到 Set[0];

2、 学生获取试卷,直接根据 Key 获取 test paper;

3、 学生提交试卷,首先根据 Key 检索,然后直接根据学员 ID 序号将 result 插入到对应位置;(如果某个学员 ID 对应到没有学员,result 为空即可)

4、 老师获取学生答卷,首先根据 Key 检索,然后直接根据学员 ID 序号查询对应位置的 result;


二、Redis Sentinel 集群的服务器数量和性能

1、TPS/QPS 估算:

之前考试试卷存储方案的 TPS/QPS 估算如下:

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

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

 

2、架构设计

TPS 1700/每秒单机就能满足;redis 单机 QPS 也在 5-10 万,因此 redis sentinel 仅需两台 redis 服务器即可,采用 Redis Sentinel 实现主从复制、读写分离,当主机故障自动切换到从机,架构图如下:



发布于: 2021 年 05 月 23 日阅读数: 9
用户头像

Neil43

关注

还未添加个人签名 2018.03.14 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营模块四作业