非功能质量需求分为4个部分:应用服务器,数据库,缓存,消息队列
本文摘自《分布式服务架构》
用于备忘,便于查找
1. 应用服务器
部署结构
序号 | 部署结构 |
---|---|
1 | 负载均衡策略 |
2 | 高可用策略 |
3 | I/O模型 |
4 | 线程池模型 |
5 | 线程池中的线程数量 |
6 | 是否多业务混合部署 |
容量和性能
序号 | 容量和性能 |
---|---|
1 | 各接口的请求量 |
2 | 各接口的访问峰值 |
3 | 平均的请求响应时间 |
4 | 最大的请求响应时间 |
5 | 在线的用户量 |
6 | 请求的大小 |
7 | 网卡的I/O流量 |
8 | 磁盘的I/O负载 |
9 | 内存的使用情况 |
10 | CPU使用情况 |
其他指标
序号 | 其他指标 |
---|---|
1 | 请求的内容是否包含大对象 |
2 | GC收集器的选型和配置 |
2. 数据库
部署结构
序号 | 部署结构 |
---|---|
1 | 复制模型 |
2 | 失效转移策略 |
3 | 容灾策略 |
4 | 归档策略 |
5 | 读写分离策略 |
6 | 分库分表(分片)策略 |
7 | 静态数据和半静态数据是否使用缓存 |
8 | 有没有考虑缓存穿透并压垮数据库的情况 |
9 | 缓存失效和缓存数据预热策略 |
容量和性能
序号 | 容量和性能 |
---|---|
1 | 当前的数据容量 |
2 | 每天的数据增量(预估容量) |
3 | 每秒的读峰值 |
4 | 每秒的写峰值 |
5 | 每秒的事务量峰值 |
其他指标
序号 | 其他指标 |
---|---|
1 | 查询是否走索引 |
2 | 有没有大数据量的查询和范围查询 |
3 | 有没有多表关联,关联是否用到索引 |
4 | 有没有使用悲观锁,可否改成乐观锁,可否利用数据库内置行级锁 |
5 | 事务和一致性级别 |
6 | 使用的JDBC数据源类型及连接数等配置 |
7 | 是否开启JDBC诊断日志 |
8 | 有没有存储过程 |
9 | 伸缩策略(分区表,自然时间分表,水平分库分表) |
10 | 水平分库分表实现方法(客户端,代码,NoSQL) |
3. 缓存
部署结构
序号 | 部署结构 |
---|---|
1 | 复制模型 |
2 | 失效转移策略 |
3 | 持久策略 |
4 | 淘汰策略 |
5 | 线程模型 |
6 | 预热方法 |
7 | 哈希分片策略 |
容量和性能
序号 | 容量和性能 |
---|---|
1 | 缓存内容的大小 |
2 | 缓存内容的实现 |
3 | 缓存内容的过期时间 |
4 | 缓存的数据结构 |
5 | 每秒的读峰值 |
6 | 每秒的写峰值 |
其他指标
序号 | 其他指标 |
---|---|
1 | 冷热数据比例 |
2 | 是否可能发生缓存穿透 |
3 | 是否有大对象 |
4 | 是否使用缓存实现分布式锁 |
5 | 是否使用缓存支持的脚本(Lua) |
6 | 是否避免了Race Condition |
7 | 缓存分片方法(客户端,代理,集群) |
4. 消息队列
部署结构
序号 | 部署结构 |
---|---|
1 | 复制模型 |
2 | 失效转移 |
3 | 持久策略 |
容量和性能
序号 | 容量和性能 |
---|---|
1 | 每天平均的数据增量 |
2 | 消息持久的过期时间 |
3 | 每秒的读峰值 |
4 | 每秒的写峰值 |
5 | 每条消息的大小 |
6 | 平均延迟 |
7 | 最大延迟 |
其他指标
序号 | 其他指标 |
---|---|
1 | 消费者线程池模型 |
2 | 哈希分片策略 |
3 | 消息的可靠投递 |
4 | 消费者的处理流程和持久机制 |