模块四作业
一、性能估算
【估算】
假设有 1000 个学校,每个学校每学期每次有 100 门课程需要考试;
假设每次试卷大小为 10kb;
由此可估算出:
试卷数量:1000(学校)* 100(课)= 10 万;
试卷所需存储空间:10 万 * 10KB ≈ 1GB。
二、数据结构
Key: 学校 ID + 科目 ID + 考试 ID
Value:试卷内容 Json
【读写分析】
读写流程
试卷平时存储在 mysql 或者 hdfs 等文件式存储中,在考试开放之前通过 key 加载到 redis 集群中,redis 集群完成主从复制。
考试开始时,客户端或浏览器调用服务端接口,通过计算节以及对应的 key 取出对应的考试 Json 串解析,并加载到前端。
三、读写流程
【写】(老师)
请求试卷: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 集群即可满足存储要求。
四、Redis sentinel 服务器数量及性能
redis 单机读写性能可达 10W/S,根据需求,读在 5W/S,写在 1700/S,根据 Redis sentinel 的高性能部署架构,一台主、两台从,三台 sentinel 即可。
评论