1. 背景
描述项目背景,说清楚整个项目的背景以及业务方向。
2. 目标
根据背景列出要实现的目标点:
- xxxx
- xxxxx
…
3. 业务分析
3.1 支持的能力
若项目已上线,本次只是迭代,要写清楚已有业务的能力,以及针对本次迭代目标,要具备什么能力(功能)
若是新项目,要写清楚针对本次迭代目标,要具备什么能力(功能)
3.2 行业调研
除非你创造了一个杀手级应用,否则你的轮子基本都是重复的。这里要写出业务领域内其他公司是如何实现的,若公司内有类似的实现,要写出公司内其他人是怎么实现的。
他人的实现存在什么优点,可以吸取?存在什么缺点,可以改进?不存在什么,我们进行支持。
列一个表格,写出支持什么能力:
能力1 | 能力2 | … | |
有赞搜索引擎 | √ | √ | |
腾讯搜索引擎 | √ | x | |
… |
列一个表格,写出支持的能力用什么方案实现的:
能力1 | 能力2 | … | |
有赞搜索引擎 | ElasticSearch | 冷热集群 | |
腾讯搜索引擎 | 自研 | x | |
… |
4. 系统整体架构
4.1 现有架构
若项目已上线,给出之前项目的架构图,并说明:
- 模块、组件的边界
- 模块、组件的依赖
- 模块、组件的功能
- 核心业务流
若是新项目,本节可以去掉
4.2 技术选型
若项目已上线,本次需要更换框架、存储、中间件等,需要增加本节
若项目未上线,需要增加本节
以表格的形式列出3种选型
方案 | 易用性 | 可靠性 | 性能 | 扩展性 | 监控 |
MySQL | 标准SQL、社区资料多 | ACID事务、主从、MGR | 4c8g TPS =xxx、QPS=xxx | 主从复制,读从写主 | zabbix |
TiDB | 标准SQL,社区资料多 | ACID事务、分布式 | 4c8g TPS=xxx、QPS=xxx | 分布式 | grafana |
… |
并根据自己的业务场景针对三种不同技术选型,给出最终的选型结果
4.2 架构变更
若项目已上线,本次需要对整体架构进行变更,需要增加本节,对架构图中变更的模块用颜色特殊标记,并给出文字说明
若项目未上线,需要增加本节
5. 详细设计
5.1 模块1
包括不限于流程图、ER图、类图
列出设计到的数据结构(数据库表、ES索引、MQ报文等)
对核心业务流程增加伪代码并进行说明
5.2 模块2
…
6. 存储设计
列出数据库表、ES索引等存储建表语句
若有磁盘IO,列出目录结构
7.灰度方案
若需要进行灰度,给出灰度范围
8.降级方案
表格列出降级范围和方案:
模块 | 降级类型 | 是否有损 | 备注 |
模块1 | 自动降级 | 无 | 说明降级后哪些功能不可用 |
模块2 | 手动降级 | 无 | 说明降级后哪些功能不可用,手动降级方法 |
模块3 | 自动降级 | 有 | 说明降级后哪些功能不可用,对什么产生的损害,是否需要修复,如何修复 |
… |
9. 异常处理
表格列出异常情况和处理方案
模块 | 异常情况 | 处理方案 |
模块1 | 异常情况1 | 修改配置中心开关xxx,降低数据库压力 |
10. 容量评估
10.1 容量预估
对用到的存储进行评估,列出表格
模块 | 使用到的存储 | 上线一周增长 | 上线一月增长 | 上线半年增长 | 上线一年增长 |
模块1 | MySQL表xxx | <1000行 <2G | <2000行 <4G | <50000行 <20G | <1000000行 <50G |
… |
10.2 流量预估
对可能存在流量徒增的接口进行评估,列出表格
模块 | 接口 | 上线一周增长 | 上线一月增长 | 上线半年增长 | 上线一年增长 |
模块1 | 接口1 | <1000QPS | <2000QPS | <5000QPS | <10000QPS |
… |
11. 监控报警
表格列出监控项,说明正常值、阈值
模块 | 功能 | 正常 | 阈值 |
模块1 | 创建订单接口 | 100TPS | 500TPS |
… |
12. 其他
12.1 改造点影响评估
若项目已上线,本次进行改造迭代,评估影响点:
- 用户体验影响
- 底层数据影响
- 集群分批发版时,新老代码影响
12.2 测试方案
写出改造点,重点需要测试什么,测试依赖有什么,是否需要压力测试、Mock大批量数据测试
12.3 上线方案
- 需要修改什么配置
应用 | 配置项 | 配置值 |
服务A | order.mq.filter | true |
… |
- 数据库SQL语句
- MQ创建Topic、消费组
- ES模板
- 各模块、组件部署依赖关系
- 应用包版本升级
12.4 方案评审记录
评审时间 | 评审人 | 评审意见 | 备注 |
2021.01.01 11:30 | 小明 | xxx模块业务流程图需要细化 |
12.5 参考资料