写点什么

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

用户头像
Hesher
关注
发布于: 2021 年 05 月 19 日
千万级学生管理系统考试试卷存储方案设计

1. 说明

本文是架构实战营第四周作业。由于作业与课程内容相关,涉及到的上下文这里大概描述一下,细节不做赘述。

2. 背景

已知学生管理系统的学生用户量数量在 1 千万上下,业务场景是考试发试卷。假设考试安排在浏览器端进行,考试前 1 分钟才可以查看试卷内容。根据考试安排,计算出请求试卷的 QPS 为 5 万,提交试卷的 TPS 为 1700。根据架构选型结果,使用 Redis Sentinel 部署 Redis 集群存储试卷信息(无需考虑考试结果存储)。

3. 方案设计

3.1 数据结构设计

  • 数据类型:Redis String

  • key:collegeId:#{collegeId}:courseId:#{courseId}:term:#{term}:midtermOrFinal:#{midtermOrFinal}

  • value:#{testPaperContent}

3.2 读写分析

  1. 老师在考试前录入试卷内容,系统拼接 key 存储为 String 类型。

  2. 学生登录并进入相应科目考试页面,系统根据 key 读取试卷内容。

3.3 设计存储方案

由于读取试卷 QPS 5 万估算的用户量是按 1000 万在校学生最大值计算的,所以可以认为 5 万即是有一定冗余量的均值 QPS。考虑开卷前 1 秒的“秒杀效应”,峰值按 3 倍估算,即 15 万 QPS。 Redis Sentinel 集群考虑使用 1 主 1 从加上 3 台哨兵节点,客户端对读请求通过轮询、加权轮询等算法实现负载均衡。


发布于: 2021 年 05 月 19 日阅读数: 19
用户头像

Hesher

关注

还未添加个人签名 2017.12.02 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统考试试卷存储方案设计