架构实战训练营 - 模块四课后作业
【作业要求】基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
3)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能
【提示】
性能可以有一定冗余
如果对 Redis sentinel 不熟悉,请参考官方文档: https://redis.io/topics/sentinel
一、业务性能要求指标
试卷请求 QPS:5 万/s
提交试卷 TPS:1700/s
二、使用的 redis 数据结构
redis 数据结构丰富。有 string、hash、list、set、sorted set 等。因为试卷是事先已经存到 redis 的,我可以理解成直接已经有一个序列化的试卷 value,所以这边使用 string 作为存试卷的内容的数据结构。
试卷由题目组成,试卷分不同课程的试卷(语文、数学、英语等),key 的设计上可以是学校 id+试卷 id,value 就是整张试卷的内容(序列化的)。
三、设计具体的读写流程
1、读的过程
当用户请求试卷的时候,直接通过 key 取获取试卷的内容(序列化的存在 redis),把内容反序列化出来,返给前端渲染即可。
2、写的过程
当试卷提交的时候,把试卷内容和对应答题答案,写到 mysql 集群。最后试卷批改后结果存到 hbase。
3、 Redis sentinel 集群的服务器数量和性能
Redis sentinel 3 台
Redis 主从 3 台
Redis 的 单机 QPS/TPS 5~10 万 , 能满足试卷请求 QPS 的要求;
主从 3 台,适当的冗余性能;
Redis sentinel 3 台保证哨兵自身高可用。
版权声明: 本文为 InfoQ 作者【Johnny】的原创文章。
原文链接:【http://xie.infoq.cn/article/56d6821317aea5d51ee2f5c4c】。未经作者许可,禁止转载。
评论