架构实战营 - 模块四作业
一、Redis 数据结构设计
key: 学校 ID+课程 ID+考试时间,例如 1001200120240401,代表学校 ID 为 1001,课程 ID 为 2001,时间为 20240401
value: String,存储 Json 序列化字符串,示例如下
二、读写分析
1、考试前 3 天,教师上传试卷内容和标准答案,key-value 存储即可
2、学生下载试卷,通过 key 获取试卷内容即可
三、服务器数量和性能评估
1、用户量估算
学生 1000 万
2、用户行为建模和性能估算
a. 试卷上传
假设平均一所大学 5 万人,1000 万学生对应的学校数量是:
1000w / 5w = 200
每个学校假设 100 个专业,每个专业假设 20 门课程,则每次考试对应的试卷数量是:
200 × 4(年级) × 100 × 20 = 160w
一个试卷 20 个判断题、20 个选择题、4 个问答题。
假设判断题 50 个汉字、判断题 100 个汉字,问题题 300 个汉字
在编码方式使用 utf-8 情况下,每个汉字占用 3 字节,单试卷的存储量为:
(20 × 50 + 20 × 100 + 4 × 300)× 3 = 12600byte ≈ 13K
单次考试总存储量为:
160w × 13K = 20.8G ≈ 20G
试卷一般在考试前三天录入系统,根据二八法则,假设 80%的试卷在 20%的时间录入系统,TPS 为:
160w × 80% / (3 × 24 × 60 × 60 × 20%) ≈ 25/s
b. 试卷下载
课程已计算出:5w/s
综上所述,单次考试总存储量为 20G,Redis 机器可以使用 32G 内存机器。单机 Redis 机器支持的 TPS 是 5~10w,因此理论上单机的并发就可以支撑业务,考虑到高可用,最终使用一主一从的部署架构,此外还需要 3 台机器部署哨兵节点。所需的服务器数量和性能如下:
4C32G100G 两台
2C4G50G 三台
版权声明: 本文为 InfoQ 作者【满心】的原创文章。
原文链接:【http://xie.infoq.cn/article/917cf8c6b7b4fd0afab5cf592】。文章转载请联系作者。
评论