模块 4. 存储架构设计
前提:
一、基础数据:
请求试卷:5 万/秒
二、试卷的存储与访问架构:
Redis Sentinel
Redis 数据结构:
考虑使用 Redis 的 hash 数据结构来存储试卷:
key 为“学科:考试时间”
Value 为“试卷题目”对象
读写流程:
一、老师出题保存试卷流程:
1、老师给某个学科的某次考试时间设计试卷;
2、保存到 2 个 redis 集群中,分别以 key 为“学科:考试时间”,value 为试卷的对象
二、学生考试读取试卷流程:
1、考试开始时,每个考生发起开始考试的操作,会请求系统读取试卷信息,该请求信息包括“学号”、“学科”、“考试时间”;
2、后台系统接受到读取试卷的请求,根据“学号”做 hash 算法,确认请求 2 个 redis 集群的哪个集群来获取试卷信息;
3、确认连接到对应的 Redis 集群后,查询 key=“学科:考试时间”的数据,返回查询结果
4、考生的浏览器端进行数据渲染,显示考试试卷;
5、开始答题。
Redis Sentinel 集群的机器数量和性能:
机器数量:
最少为 9 台:
3 台 Sentinel 集群(用于监测两个 Redis 集群)
3 台集群 1(1 主 2 从)
3 台集群 2(1 主 2 从)
性能估算:
单个 Redis 集群的性能体现在其中为主的那台机器,一个集群是有单机性能瓶颈。预估 Redis 的单机性能支持约 6 万/秒(网上查的,不确定是否准确)。
对于之前分析的请求试卷为 5 万/每秒的要求,是个平均值。在实际考试的时候可能在某个时间点上会集中,所以认为只提供一个 Redis 集群应该不够用,故决定提供两个 Redis 集群来做负载均衡,以确保能够支持系统稳定提供服务。
评论