模块 4- 作业
一、redis 数据结构
Key:paperNo(试卷编号)
Value:Sorted Sets
Sets[0]:score = 0,保存试卷基本信息
{
"paper_no": "<试卷编号>",
"subject_name": "<科目名称>",
"subject_no": "<科目编号>",
"questions_setter": "<出题人>",
"questions_count": "<题目数量>",
"questions_score": "<满分>"
}
Sets[questions_no]:score = 题目编号,保存题目详细信息
{
"type": 1(单选)、2(多选)、3(简答),
"questions":"<题目内容>",
"options":{ // 如果是选择题,则必须有选项信息
A: "<选项 A 的内容>",
B: "<选项 B 的内容>",
C: "<选项 C 的内容>",
D: "<选项 D 的内容>",
............
},
"correct_answer":[abcd], // 选择题必须有正确答案信息
"score":<该题最高得分>
}
二、读写流程
三、服务器数量与性能
结论:
2 台 redis 服务器,一主一从 1 核 16G
3 台 redis sentinel 服务器 1 核 2G
要求:
试卷请求 QPS:5 万/s
提交试卷 TPS:1700/s
这里参考阿里云 redis 服务的 benchmark。
https://help.aliyun.com/document_detail/145227.html?spm=a2c4g.11186623.6.585.5bc972baT07hqb
根据图上所述,单副本 QPS 为 8w。
考虑到测试模型与实际可能不同,数据有些许偏差,再考虑性能冗余。因此读请求使用 2 台服务器比较合适。
写请求数量级比读请求少一个级别,考虑到 redis 写不是一个性能瓶颈,对内存的读和写效率是差不多的。因此一台主节点可以抗住 1700/s 的 TPS。
评论