架构师第四课作业
1、学生管理系统存储架构图
![](https://static001.geekbang.org/infoq/9e/9eb051db54cf5191079293224e19c846.png)
2、redis 存储结构设计
根据上面的设计,学生管理系统的试卷存储和访问使用 redis 来实现,并使用 Sorted set 数据结构存储,其内部使用 HashMap 和跳跃表(SkipList)来保证数据的存储和有序,HashMap 里放的是成员到 score 的映射,跳跃表按 score 从小到大保存所有集合元素。使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。时间复杂度与红黑树相同,增加、删除的操作较为简单,该功能对于性能的要求会比较高,所有使用 Sorted set 数据结构存储是比较合适的。
3、具体读写流程
【数据结构设计】
Key:学校 ID + 学号 ID
value:试卷内容
【读写分析】
1. 学生通过自己的学校 ID 和学号读取试卷内容,并将自己的答案写入到试卷中
4、集群服务器和性能
假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,
且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:
• 请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒
Redis 单机 TPS 5~10 万,使用 3 台服务器,主从复制,读写分离满足性能要求。
评论