写点什么

模块四作业

作者:Ryan
  • 2023-01-08
    北京
  • 本文字数:626 字

    阅读完需:约 2 分钟

【作业题目】

设计千万级学生管理系统的考试试卷存储方案

【作业要求】

基于使用 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 台服务器即可


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

Ryan

关注

还未添加个人签名 2018-09-27 加入

还未添加个人简介

评论

发布
暂无评论
模块四作业_架构_Ryan_InfoQ写作社区