模块四作业
1、redis 存储架构
根据估算结果,单台 Reids TPS 大概 5 万~10 万,所以两台 redis 的主从结构可以满足需求。当两个 sentinel 监测到 master 失败后,进行 failover 操作
2、redis 数据结构
存储类型:Sorted Set
key: 学校 ID+年级+学期+课程 ID+题目类型
存储方式:
考试题目为 value,题目顺序为 score。其中选择题,由题目和选项 encode 为 json 格式字符串。
3、读写流程
1)写操作
通过 zadd key score value 方式添加试卷题目
2)修改题目
通过 zrange key start stop 方式读取对应的题目,修改后在通过 zadd 方式修改题目
3)删除题目
通过 zrem key value 删除题目
4)读取试卷
通过 zrange key 0 -1 读取题目列表
根据估算,读取试卷的 QPS 最高可达到 5 万/秒,不仅需要考虑存储的读性能,还需要考虑到服务器带宽。为了提高数据处理效率及性能,降低带宽,一次只读取一个种类型的题目。即第一次加载试卷,只加载判断题,判断题做完后,再加载选择题,最后加载大题。这样虽然请求次数多了,但降低单次请求的数据量。每个同学做完一类题目的时间差大约 5 分钟,后续的两类题目的请求的 QPS 将降低为 1 万/秒。
评论