架构实战训练营存储架构设计
首先分析性能复杂度,在于开始考试时瞬间读压力比较大,评估下瞬时的 QPS 有 5w/s。
因此要考虑优化读性能。
redis 的数据结构可以采用 List 结构,把试卷按照每个页面的内容的顺序依次
存入这个 List。这样设计的优点在于每次考试开始的时候,只需要读取第一页
的内容。通过 LRANGE key start stop API 来读取每页的内容。key 的话,
就是考卷的 id,可以是学校 id+考试 id(假设每个学校考卷不同)。start stop 就是页码的范围。
写入的时候通过 RPUSH key API 来依次写入考卷的内容。如果需要修改,
可以通过 LSET key index value API 来修改指定的考卷页面的内容。
5w/s 的 qps,可以通过主从架构来满足,考虑到 redis 单机 5w/s 的性能,1 主 1 从就可以了,适当
留点冗余。另外,考虑到读取考卷容易形成热点数据,且考卷内容通常不会在考试时在修改,
可以在业务服务器上增加本地缓存,来进一步减轻 redis 服务器的读取压力。
评论