模块四作业
【作业题目】
设计千万级学生管理系统的考试试卷存储方案
【作业要求】
基于使用 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
计算 Redis sentinel 集群的服务器数量和性能
(本次作业总耗时:15 min)
1、Redis 数据结构设计
用 Redis 存储考试试卷,每张试卷一定会有一个唯一标识,试卷内容作为一个整体,因此我选择使用 string 结构进行存储,key 为 id,value 为试卷内容
2、业务流程
对于试卷,主要包含四个业务,分别看个业务场景下的处理流程
新增试卷
1、生成试卷的唯一 ID,可以使用课程 ID + 学期号 + 试卷编号作为试卷的唯一 ID,该唯一 ID 需要存储在 MySQL 中,和课程 ID 能关联起来
2、将 ID 和试卷内容插入 redis 中
更新试卷
1、从 MySQL 中取到试卷 ID
2、使用 ID 更新 redis 中对应的试卷内容
获取试卷
1、从 MySQL 中取到试卷 ID
2、根据 ID 从 redis 中取出试卷内容
删除试卷
1、从 MySQL 中取到试卷 ID
2、根据 ID 删除 redis 中试卷数据
额外的一个小设计,在系统里进行考试,一定能提前拿到课程 ID。为了避免大量请求到 MySQL,根据课程 ID 查试卷 ID,可以将这俩 ID 的映射关系提前预热 缓存于 redis 中,减少 MySQL 压力
3、服务器数量预估
根据之前预估结果,试卷请求 QPS 为 5 万/s,不高,单机 redis 就能抗住。为了高可用,设计为
1 主 + 2 从 + 3 sentinel,共 6 台服务器即可
版权声明: 本文为 InfoQ 作者【Ryan】的原创文章。
原文链接:【http://xie.infoq.cn/article/39d17fd4f9072d1025a8b33a9】。文章转载请联系作者。
评论