[架构实战营] 模块四作业
Redis 数据结构设计
需求
存储试卷;
使用 redis sentinel;
学生拉取试卷 QPS = 5w/s;
考虑
若已试卷的题目为键去存储,会导致 QPS 增长到单个复制集群无法承载的程度,所以以试卷为粒度存储;
此时一次试卷内容会过长,导致 redis 读取性能下降,所以复制集群需要多台设备支持对应的读性能;
试卷形式不同:一题一展示,整张考卷全部展示,分页展示;
实现
使用 list 的存储方式;
key:学校 ID + 学期 ID + 学科 ID + 试卷 ID;
value:list,list 内为 json 格式题目内容;
读写流程
学生发起读试卷请求;
经由应用将不同份试卷的请求分布到不同 redis 节点上;
使用 LRANGE key 0 -1 就可以获取对应试卷内容;
考生完成考卷上传至 HBASE;
计算 Redis sentinel 集群的服务器数量和性能
学生拉取试卷 QPS = 5w/s;
单台 redis 标准读 QPS = 5w/s;
若全量读取考虑读取内容的大小影响单线程的工作内容,单台 redis 标准读 QPS = 2w/s;
若考虑冗余及单台设备故障时的影响,即 n+1 冗余;
redis 集群由 1 台写入节点 + 3 台备份节点组成;
单台失效时 3 台设备提供 QPS = 6w/s;
版权声明: 本文为 InfoQ 作者【Geek_0ed632】的原创文章。
原文链接:【http://xie.infoq.cn/article/7b5882fad07671af62f0c7d0a】。文章转载请联系作者。
评论