步骤
步骤1:估算性能需求
任务
基于具体的业务场景来估算性能需求,包括存储量、读写性能等
挑战
- 不知道如何估算
- 担心估算不准
步骤2:选择存储系统
任务
根据技术储备、方案优缺点选择合适的存储系统
挑战
- 不知道有哪些存储系统
- 知道但是不知道应该怎么选
步骤3:设计存储方案
任务
基于选择的存储系统,设计其具体的存储方案,如果发现不行,回到步骤2再换一个
挑战
- 不知道如何设计存储方案
估算存储性能
步骤
步骤1:用户量预估
规划
根据成本、预算、目标等确定
案例
- 某个新业务预算投入2000万拉新
- 年底某业务用户规模达到100万
推算
基于已有数据推算
案例
- 做一个面向广州在校大学生的购物小程序
- 香港地铁扫码乘车业务
对比
跟已有标杆进行对比
案例
- 跟竞争对手比
- 跟自己已有的同类业务比
步骤2:用户行为建模
指标 | 具体说明 |
---|---|
行为 | 用户的典型行为 |
数量 | 采取某种行为的用户数量 |
频率 | 用户某种行为的频率 |
案例
- 预计每个月使用钱包付款码的用户有100万,付款笔数到达500万笔
- 每天使用扫码乘车的用户有500万,平均扫码次数4.6次
步骤3:性能需求计算
指标 | 具体说明 |
---|---|
数据量 | 需要存储的数据总量(G) |
请求量 | 对数据的读写请求量(TPS/QPS) |
预留量 | 预留的增长空间 |
说明和技巧
- 并不是所有数据都一定要用同样的存储方式,例如当前数据和历史数据可以分开存储
- TPS/QPS需要计算出以秒为单位的数值,并且计算“平均值”和“峰值”
- 预留增长空间不能太大也不能太小,如果能做到线性伸缩是最好的
选择存储架构
常见存储系统
如何选择合适的存储系统
指标 | 具体说明 |
---|---|
技术本质 | 挑选应用场景和系统本质契合的系统 |
技术储备 | 挑选熟悉的 |
综合考虑 | 可维护性、成本、成熟度等 |
什么是技术本质
系统的DNA,有别于其他系统的典型特征
技术本质有什么影响
技术本质决定了其核心应用场景和优缺点
举例
- 游戏服务器用什么存储玩家数据比较好
- 论坛服务器用什么存储帖子数据比较好
设计存储方案
步骤1:设计数据结构
选择或者设计具体的数据结构,例如如何设计具体的表,选择Redis的哪个数据结构
步骤2:验证读写场景
将数据结构放到具体的场景进行验证,设计读写具体如何执行(Rule)
步骤3:评估读写性能
评估具体场景下的数据结构设计是否满足性能需求,不满足则重新设计