写点什么

hw4- 千万级存储方案

作者:WWH
  • 2021 年 11 月 21 日
  • 本文字数:502 字

    阅读完需:约 2 分钟

试卷存储

  • 如果按 String 存储,每天所有考试都有对应的 key。Key 太多查询速度太慢,不考虑。

  • List 是无序的,可以头插和尾插,插入的速度可以达到 O(1)。但是无序性导致查询的速度很慢。

  • 对于 Hash,可以把考试的日期做 key,这天中每场考试做 hashKey,读写性能都可以。

  • 普通 set 跟 list 一样,无序性导致查询的速度很慢。

  • Sorted set 有基于考试,和考试日期做 key 两种。试卷本身没有先后顺序,所以排序没有意义。

  • 所以,把考试日期做 key,这天中每场考试做 hashKey 的 hash 的最优存储试卷的数据类型。当考试日期结束后,直接删除 key,减少遍历的 keys。

 

读写流程

教师上传试卷,学生开始考试时读取试卷。

 

性能估算

假设有 1000 万学生,每个学生平均每学期修 4 门课。这些学生的考试时间分布在 1 个月以内,一个月有 20 天可以考试,每天 4 场考试。请求试卷是在考试的前一分钟内完成,交卷是在最后三十分钟内完成。

试卷请求 QPS:1000 万 * 4(课)/ 20(天)/ 4(场)/ 1 分钟 = 50 万/分钟≈8000/s

提交试卷 QPS:1000 万 * 4(课)/ 20(天)/ 4(场)/ 30 分钟 =1.67 万/分钟≈278/s

 

“试卷请求”跟 Redis 有关,而“提交试卷”已经跟 Redis 无关了。QPS 8000/s 单机都能够扛下了。3 个 sentinels 是标配,所以标配就够了。

用户头像

WWH

关注

还未添加个人签名 2020.10.29 加入

还未添加个人简介

评论

发布
暂无评论
hw4-千万级存储方案