架构实战营模块四作业
Redis 数据结构
分析:语文试卷卷面大约 10000 字,数学试卷卷面大约 1000 字,其他科目试卷比起数学来说只多不少,就算按照数学试卷来说,1000 字即 2K 字节,加上点富余就是 3K,每秒 5 万次请求就是每秒 150MB 的读取量,需要 2G 左右的带宽,考虑到稳定,带宽需要更高,但是为了考试这几天使用购买那么大的带宽没必要,所以引入 CDN
试卷结构
试卷结构使用 sorted set
key:paper:学校 ID:课程 ID:考试 ID
member 试题
score 试题编号
试卷 CDN 结构
试卷 CDN 使用字符串
key:cdnpaper:学校 ID:课程 ID:考试 ID
value:试卷链接
答案结构
答案结构使用 hash
key:answer:学校 ID:课程 ID:考试 ID:学生 ID
field:试题编号
value:答题信息
读取流程
学生读试卷
1、传入学生的学校、课程、考试信息,到后台系统。
2、后台系统通过学校、课程、考试信息去 redis 拿到试卷链接。
3、后台系统将试卷链接返回给学生。
4、学生通过试卷链接获取试卷。
学生作答
1、传入学生的学校、课程、考试信息、答案信息到后台系统。
2、后台系统将数据写入 redis。
3、后台系统返回写入结果给学生。
存储分析
redis 集群单台 TPS 能到 10 万级别,所以理论上单机足够,但是为了保证考试期间系统的高可用性,所以使用 redis 主从,一主两从。
评论