写点什么

【初恋系列】那年的试卷我们再肝一遍(试卷存储详细设计)

发布于: 刚刚
【初恋系列】那年的试卷我们再肝一遍(试卷存储详细设计)

学生系统试卷存储详细设计

一 性能背景及架构

【登录】

1.登录次数:3000/s;

2.登录记录:存储数据量 36 亿条,存储容量 43G,写入 TPS =登录 TPS = 3000/s,读取 TPS 无需特别设计。

【注册】

1.注册 TPS = 3/s,可以忽略不计;

2.在校学生数据存储:基本数据= 2G,图片数据= 10T;

3.离校学生数据存储:基本数据每年增长 500M,图片数据增长 2.5T。

【考试】

1.在校学生考试结果存储:2.4T;

2.离校学生考试结果存储:每年增长 0.6T;

3.试卷请求 QPS:5 万/s;

4.提交试卷 TPS:1700/s。



二 需求内容及详细设计

基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:

 

1 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。

【方案】

Key:学校 id+试卷 ID + paper;

Value:选择 String,试卷对象序列化数据。

【具体方案】

新增试卷:直接新增试卷数据;

删除试卷:直接删除试卷数据。

更新试卷:直接更新试卷

查询试卷:直接查询试卷

【方案分析】

增删改查都直接根据学校 id+试卷 id 操作的,效率高。

 

2 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。

写:(1)试卷类需实现序列化

(2)将试卷信息写入到试卷对象中

(3)将试卷对象序列化

(4)根据学校 id+试卷 id 将序列化的数据设置到 redis 中

读:(1)根据学校 id+试卷 id 获取试卷的序列化数据

(2)将序列化数据反序列为试卷对象

 

3 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。

试卷写入:试卷写入没有高性能、高可用需求,

试卷读取:根据性能估算结果可以看到试卷请求的 QPS 为 5 万/s,redis 单台的 QPS 性能为 5 万至 10 万/s,所以单纯性能上来讲,一台 redis 就足够了。但考试的时间来不及等待,是非常的重要,所以需要做到高可用,采用 Redis sentinel 集群,而 Redis sentinel 集群的特点至少需要 3 台机器支撑才能实现高可用,所有选择部署 3 台机器。机器 1 部署 master 节点、sentinel 节点,机器 2 和机器 3 都部署一套 slave 节点、sentinel 节点。

 

综上所述需要 3 台机器作为试卷的 Redis sentinel 集群

发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2021.05.13 加入

还未添加个人简介

评论

发布
暂无评论
【初恋系列】那年的试卷我们再肝一遍(试卷存储详细设计)