架构实战营模块 4 作业
主题
考试试卷
千万大学生考试试卷
用 Redis-Sentinel 存储方案设计
行为建模
学生 1000 万人,假设,只有大一到大三学生参考考试,假设每一年级人数均分为 250 万人。
假设:
一学期修 20 门课,一门课每学期考 2 次试,每学年有 2 个学期。
考试集中在一个月内,一周考 5 天,一天上午考 2 门,下午考 2 门
读卷时集中在考试开始后 1 分钟内
交卷时集中在考试结束前 30 分钟内
性能估算
分为存储量计算和考试时的读卷和交卷时的性能估算
存储量计算
分为学校需要的考试结果存储的总量 2.4TB
和每一年新增的存储量 0.6TB
每一份考卷假设答题的存储量
性能估算
读写分析
正常情况的读写:
从 Redis M1 读取:
写入时由 Redis M1 写入,再用异步写到 Redis R2 和 Redis R3 做备份
当异常发生:
当 Sentine1 发现 Redis M1 无法完成读操作,会通知 Sentinel 2 和 Sentinel 3 做选举,让 Redis R2 或 Redis R3 作为 Master,启动 failover 机制,把读的数据回覆给 client
当 Sentine1 发现 Redis M1 无法完成写操作,会通知 Sentinel 2 和 Sentinel 3 做选举,让 Redis R2 或 Redis R3 作为 Master,启动 failover 机制,把写的数据写到 Redis M2,再异步复制给 Redis R1 和 Redis R3
Sentinel 设计
本案经过性能估算 QPS TPS
单机 Redis 可应付性能需求。
考虑到失效时高可用
Sentinel 至少要 3 个,
Redis Master 之外布 2 个 Redis Replica 当作数据复写的点,同时也将 Sentinel 安装在 Redis Replica 内
监控读写状况
若发生 Redis M1 发生问题无法读写
会切换至 Redis Replica 的节点,使服务可以继续
评论