架构实战营模块四作业
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
3)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
一、考试试卷存储量估算
假设 1000 万学生;每年 2 次考试,每次 20 们课,则一年 40 次考试;则一共有 1000 万**40=4000 万试卷。
假设每张试卷 44 道题,选择题 20 道,判断题 20 道,每道 300 字节;大题 4 道,每道 5000 字节。则每张试卷 32KB.
所以,所有试卷总存储量为:4000 万*32KB=1.2T
假设所有考试都集中在学期结束的一个月内(周末不考试),大部分人在网上用浏览器进行答题,在考试开始的 1 分钟内发出读请求,考试结束前半小时发出写请求。考试集中在白天 8 小时内。
则,查看试卷的读请求 TPS:1000 万人*20 门课/22 天/8 小时/1 分钟=1.9 万/秒
提交试卷的写请求 TPS:1000 万人*20 门课/22 天/8 小时/30 分钟=630/秒
使用 redis sentinel 可以支持该需求
二、试卷使用的 Redis 数据结构
由于每个试卷,都有对应的,学校、学院、专业、姓名等信息,所以使用 hash table 结构。
key :试卷 ID
value:选择 hash table,将学校,学院、专业、姓名、答案等信息放入 table 中。
三、Redis 读写流程
四、计算 Redis sentinel 集群的服务器数量和性能
Redis 单机已经可以支持 5~10 万 TPS,可以采用 3 台 Redis 服务器,一主两从,满足高可用。
同时,采用 3 台 Redis sentinel ,监控 Redis 集群并确保主从及时切换。
评论