写点什么

模块 4. 存储架构设计

用户头像
脉动
关注
发布于: 5 小时前

前提:

一、基础数据

请求试卷: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 集群来做负载均衡,以确保能够支持系统稳定提供服务。

 

用户头像

脉动

关注

还未添加个人签名 2019.09.12 加入

还未添加个人简介

评论

发布
暂无评论
模块4.存储架构设计