架构实战营 - 模块四 - 作业
1. 业务背景
暂无
2. 约束和限制
暂无
3. 总体架构
3.1 架构分析
暂无
3.2 总体架构
![](https://static001.geekbang.org/infoq/87/8767d8b97bac7dff979126cc9a03323a.png)
4. 详细设计
4.1 存储设计
4.1.1.估算性能需求
(1)用户量 1000 万,
(2)登录:3000/s,注册: 3/s
在校学生数据存储:基本数据 2G,图片数据=10T
离校学生数据存储:基本数据每年增长 500M,图片数据每年增长 2.5T
考试:
在校学生考试结果存储:2.4T
离校学生考试结果存储:每年增长 0.6T
(3)试卷请求 QPS:5 万/s
(4)提交试卷 TPS:1700/s
4.1.2.选择存储系统
试卷的存储和范围:采用 Redis sentinel
学生的基本信息和老师课程的考试结果:采用关系型数据库 MySQL
学生的考试结果和登录信息:采用 HBASE
4.1.3.设计存储方案
4.1.3.1. Redis 的存储方案设计
4.1.3.1.1.Redis 数据结构设计
试卷题目的存储采用 String 的数据结构进行存储
Key:为本学期课程 ID 和考试日期,例如:43254435_20240427,
Value:是考试试卷内容。
4.1.3.1.2.Redis 读写流程
a.新增试卷
1、老师给某个学科的某次考试时间设计试卷;
2、保存到 2 个 redis 集群中,分别以 key 为“课程 ID_考试日期”,value 为试卷的对象
b.学生读取试卷内容
1、考试开始时,考生进入某个课程的考试点击开始,获取课程 ID 和考试日期,请求后台数据;
2、后台接口根据请求 key,查询 key=“课程 ID_考试日期”的数据,返回查询结果;
3、考生的浏览器端进行试卷内容的展示;
4、开始答题;
c.考试完成,保存试卷
4.1.3.1.3.Redis 性能估算
服务器数量最少 6 台,部署多台 redis 节点,其中只有一台节点是主节点(master),其他的节点都是从节点(slave);
一般情况下,为了保证高可用,sentinel 也会进行集群部署,防止单节点 sentinel 挂掉。当 sentinel 集群部署时,各 sentinel 除了监控 redis 实例外,还会彼此进行监控;
![](https://static001.geekbang.org/infoq/6f/6f50aea9a813f648e9dade71afc58c46.png)
4.1 核心功能
暂无
4.2 关键设计
暂无
4.3 设计规范
暂无
5. 质量设计
暂无
6. 演进规划
暂无
评论