写点什么

架构实战营模块四课后作业

作者:Jude
  • 2022 年 1 月 07 日
  • 本文字数:577 字

    阅读完需:约 2 分钟

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


【作业要求】

基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:

•完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。

•设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。

•对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。


答案:

  1. Redis 数据结构

用 String 类型的数据结构来存考卷。

数据结构设计:

Key: 学校 ID + 科目 ID + 考试 ID

Value:试卷内容 Json


  1. 读写流程

试卷平时存储在 mysql 或者 hdfs 等文件式存储中,在考试开放之前通过 key 加载到 redis 集群中,redis 集群完成主从复制。

考试开始时,客户端或浏览器调用服务端接口,通过计算节以及对应的 key 取出对应的考试 Json 串解析,并加载到前端。


  1. 读写性能、集群规模

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

Redis 单机已经能满足 5 万每秒的简单查询,哨兵模式至少三个哨兵实例,所以采用一主两从,由于写入不频繁,所以不用做读写分离,预计整体集群可支持 15 万 QPS。

存储要求:500(学校数)*20(20 门课)*2 (考试次数)*2(学期) *20KB ≈ 800M 假设每 5 年更新一轮试卷,总存储量在 4000M = 4G 内存 留 50%富余量,则集群为 8G 内存机器三台搭建 Redis sentinel 集群即可满足存储要求。


用户头像

Jude

关注

还未添加个人签名 2018.10.20 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块四课后作业