写点什么

架构实战营 模块 4 作业

用户头像
CR
关注
发布于: 2021 年 05 月 23 日

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

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

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

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

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

【提示】性能可以有一定冗余如果对 Redis sentinel 不熟悉,请参考官方文档: https://redis.io/topics/sentinel


1、数据结构设计

Key:学校 ID+试卷 ID

Value:sorted set 类型,按题号排序,试题内容采用 json 格式


2、读写流程

发布试卷:

客户端根据学校 ID+试卷 ID 提交试卷所有题目,也可根据学校 ID+试卷 ID+题号修改某个试题


读试卷:

客户端根据学校 ID+试卷 ID 请求某个试卷对应的 set 从而获取试卷内容。


3、服务器数量和性能估算

假设每个大学平均 5 万人,1000 万人大概有 200 所大学,假设每所大学平均 100 个专业,每个专业设置 20 门课,则试题种类有 200(所大学)*100(个专业)*20(门课程)=40 万种试题

假设每道题题目描述平均 300 字,每个试卷的大小为:44(道题)*200(中文字)*3(字节,UTF8 编码)=26400 字节 大约为 26Kb

那么一年的考试试卷需要的存储空间为 40 万*26Kb*2(次考试)=20800000Kb 大约为 20GB

该容量单机内存足够存储,因此 redis sentinel 数据节点采用一主两从,每台内存为 32G,sentinel 节点采用 3 个,总服务器至少 6 台。

单台 Redis 提供 5~10 万 TPS,2 台从节点接受读请求,总共可提供 10 万~20 万 QPS


用户头像

CR

关注

还未添加个人签名 2018.09.23 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 模块4 作业