千万级学生管理系统的考试试卷存储方案
【考试存储性能需求汇总】1.在校学生考试结果存储:2.4T;2.离校学生考试结果存储:每年增长 0.6T;3.试卷请求 QPS:5 万/s;4.提交试卷 TPS:1700/s。
Redis 技术特性:redis 是 k-v 存储系统,支持三种部署模式,支持多种数据结构
【技术本质】
1. in-memory:意味着性能高,但同时意味着数据持久化不是核心,可能丢数据。
2. data structure store:数据结构存储,而不是关系数据,也不是文件存储。
【性能量级】单机 TPS 5~10 万。
【部署模式】
【支持的数据类型】
String、Hash Tables、LinkedLists、Sets、Sorted Set。
【试卷存储的数据结构】
使用 String 类型进行试卷存储,使用年级和课程作为 key。
【试卷读取流程】
客户端与 master 建立连接步骤
1.客户端遍历所有的 Sentinel 节点集合,获取一个可用的 Sentinel 节点。
2.客户端向可用的 Sentinel 节点发送 get-master-addr-by-name 命令,获取 Redis Master 节点。
3.客户端向 Redis Master 节点发送 role 或 role replication 命令,来确定其是否是 Master 节点,并且能够获取其 slave 节点信息。
4.客户端获取到确定的节点信息后,便可以向 Redis 发送命令来进行后续操作了。
5.根据 key 从 master 节点获取数据。
【容量预估】
根据性能需求,试卷请求约 5W/s,考虑 20%的提升,约 6W/s。reids 单台的性能能够达到 5-10W tps。Sentinel 集群使用 3 台进行负载,存储使用一个 master 节点,1 个 slave 节点的主从架构即可。
版权声明: 本文为 InfoQ 作者【michael】的原创文章。
原文链接:【http://xie.infoq.cn/article/c72b772a249643f73aa0b1aad】。文章转载请联系作者。
评论