写点什么

模块四课程作业

作者:李晓笛
  • 2022 年 1 月 09 日
  • 本文字数:866 字

    阅读完需:约 3 分钟

前言

本文是就千万级学生管理系统的考试试卷存储方案进行设计和说明。

词汇表

Redis:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的 API。

Redis sentinel:Redis Sentinel 为 Redis 提供了高可用解决方案。

1、业务背景

千万级学生管理系统学生人数为 1000 万,每个学生平均一学期有 20 门课程,每年有 2 次考试,每次考试有 20 道判断题、20 道选择题,4 道大题,学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,

且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:

• 请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。

基于以上场景进行设计,千万级学生管理系统存储架构分为了三种:试卷采用 redis sentinel 的模式,老师试卷分析采用 mysql 分区的模式,学生试卷则采用 HBase 进行存储。

本文要重点讨论的是 redis sentinel 的设计部署方案。

2、约束和限制

3、总体架构

3.1 架构分析

试卷采用 redis 的主要原因是 TPS 比较大,redis sentinel 支持主从的模式,因此性能比较好。另外,考试时间是一定的,需要系统具备较高的高可用性。redis sentinel 是 redis 官方提供的高可用解决方案。

3.2 总体架构

redis 支持 String、List、Set、Sorted Set、hash 以下五种类型。

试卷采用 hash 的形式进行存储,key 为考试的期数+科目,value 为试卷中所有的题目。

redis 读写流程为:

1、考试开始之前,管理后台通过 redis 客户端将试卷内容写入 redis;

2、考试开始时,学生在考试管理系统中从 redis 读取试卷内容;

3、考试管理系统根据从 redis 中读取的 value 值进行解析,并将试卷内容展示出来。

经上网查询:

以下系统参数配置,常用的 GET/SET/INCR 等命令,都在 8W+ QPS 以上。

  • 系统 :CentOS 7.6 64 位

  • CPU :4 核

  • 内存 :8 GB

  • 磁盘 :40 GB ESSD 云盘

  • Redis :5.0.5

为保障冗余性,采用 8 核、16G 内存,80GB ESSD 的云盘。

用户头像

李晓笛

关注

还未添加个人签名 2020.02.19 加入

还未添加个人简介

评论

发布
暂无评论
模块四课程作业