写点什么

模块四作业

用户头像
Geek_1cdcf6
关注
发布于: 2021 年 05 月 17 日

基于 Redis Sentinel 的试卷存储方案

数据结构

Redis Key-Value 存储,试卷内容 Value 使用 String 结构即可(如 JSON 序列化,或自定义格式)。

读写流程

读取场景

试卷读取的应用场景主要为学生考试时根据试卷 ID 读取。

读取请求使用试卷 ID,返回完整试卷内容 string,由客户端进行反序列化及后续处理。

读取请求可分布到从服务器上。

写入场景

  1. 上传新试卷,返回试卷 ID。

  2. 更新试卷,根据试卷 ID 及试卷内容,如试卷 ID 有效且权限有效,则覆盖试卷内容。

(注: 此处为完全覆盖,客户端可先读取现有试卷并进行更改,上传修改后的完整试卷内容进行覆盖。)

  1. 可选: 可对试卷进行版本化记录,存储试卷修改历史版本,并支持根据版本读取(默认读取最新版本),每次上传新试卷修改则新建一个版本。

服务器集群

数据估算

学生数量 1000w。

考试月-试卷读取请求 QPS: 1000 万 * 20(课)/20(周末不考试)/4(每天 4 堂考试)/1(分钟)/60,峰值约 5 万/s。

教师试卷上传及修改并发要求较小,只需要保证基本写入可靠性。

试卷存储量:

考虑全国约三千所高校,约两千接入系统,假设平均一千课程,每个课程每年两场考试,试卷序列化内容大小平均 300k,则每年数据存储总量约为 2000*1000*2*300k=1.2TB。

服务器设置

Redis 单机已可支持 5 万+的 KV 读取 QPS,可使用三台数据服务器保证高可用,1 主+2 从。同时使用三台哨兵服务器确保服务器监控及主从切换。


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

Geek_1cdcf6

关注

还未添加个人签名 2021.01.18 加入

还未添加个人简介

评论

发布
暂无评论
模块四作业