变更记录:
版本号 | 变更人 | 变更时间 | 变更记录 |
---|---|---|---|
V1.0.0 | 张三 | 2022-12-10 | 初始模板 |
项目的范围、约束和期望
名词 | 解释 | 案例 |
---|---|---|
充值 | ||
提现 |
描述系统负责的业务范围,以及上下游关系。
逻辑视图,用于描述系统的功能需求,即系统给用户提供哪些服务;以及描述系统软件功能拆解后的组件关系、组件约束和边界,反映系统整体组成与系统如何构建的过程。
用于描述系统软件组件之间的通信时序,数据的输入输出。这里描述的是整个系统组件间的处理过程,而不是具体某个接口内部的处理流程图。
开发出的软件系统,最终是要运行在物理或软件环境上。物理环境可能是服务器、PC机、移动终端等物理设备;软件环境可以是虚拟机、容器、进程或线程。部署图就是对这个部署信息进行描述。
关键流程是指可能产生高舆情、高资损风险的场景
资金安全评估,包括且不限于如下几项
- 资金调用链路。如支付宝、微信转账完整链路,用户优惠券发放链路。
- 资金对账方案。整体对账+明细对账方案,对账口径等。
- 资损评估。是否有资损(包括用户资金损失和平台资金损失),风险规模,熔断和止损方案。
如果有PGC/UGC的内容,或者有用户、商家上传的部分,要明确每个字段的内容安全方案。
接口名 | 访问链接 | 下游强弱依赖和读写比例 | 日常&峰值流量 |
---|---|---|---|
xxDB:强依赖,2读1写 |
强依赖:下游错误时自身接口完全不可用。
弱依赖:下游错误时,自身功能部分不可能,如部分字段不展示或展示计算中等。
接口名 | 是否有限流,如果有限流则说明方案和影响 |
---|---|
限流方案如:
- SLB限流
- 应用内如Sentinel限流
- cpu等自适应限流
- 消息队列消费速率限流
- 对下游限流(保护下游,或者防止下游拖垮自己)
限流时影响包括且不限于:
- 用户侧错误信息、文案,不能报被限流等,也不能提示用户重试(避免雪崩)。
- 资金、权益类场景重点关注前端兜底文案,不能兜底显示中奖或具体金额,可显示错误页或者部分数值显示“计算中”等。
- 可能产生的数据不一致情况,以及如何应对。
链路名 | 资源是否可以水平扩展 | 链路上是否有单点风险 | 如果出现资源不足如何应对 |
---|---|---|---|
登录 | |||
抢红包 |
数据库性能评估,包括不限于日常&峰值水位(cpu、内存、磁盘等占比),慢SQL
梳理缓存抖动、击穿、热点、带宽打满等异常情况下对业务的影响。
评估链路中是否有数据不一致的场景,包括不限于:
- 分布式写场景。部分写失败场景,幂等、重试等逻辑。
- 异步链路:消息延迟、乱序、丢失等风险。
- 离线计算链路:如果离线任务产出不及时,对系统的影响。
- 数据污染:上游数据错误、离线任务产出异常防范,如设置关键字段的上下限(优惠券发放最多xx元)
针对每个场景,要明确:
- 数据不一致的影响面
- 是否会出现资损或舆情
- 对账、监控、告警
- 接口成功率监控
- 接口流量监控
- 应用cpu、线程池、磁盘等监控
- 数据库监控
- 对账监控
- 强弱依赖整理,降级方案
- 容灾。如存储可靠性、存储备份、应用可用性、多机房等
- 兜底机制
- 单点风险
- 快恢方案
罗列业务中关键的可开关、可调整参数等
风险 | 解决方案/结论 |
---|---|
数据迁移过程中,可能会有丢数据风险 | 这么XX做可以基本规避这个风险 |
ECS、微服务容器等资源情况。
实例 | 类型 | 表名 | 是否分库分表,分表字段 | 单表总行数 | 每日新增行数 |
---|---|---|---|---|---|
mysql、TableStore等 |
实例 | Topic | 峰值qps | 每日总量 | 消息平均大小 | 订阅者列表 |
---|---|---|---|---|---|
任务 | 实现方式(分布式、crontab等) | 执行开始时间 | 平均时长 | 备注 |
---|---|---|---|---|
SLB、CDN、OSS等
维度 | 问题 | 级别 | 描述 | 解决方案 | 成本 | 责任人 | 完成时间 |
---|---|---|---|---|---|---|---|
安全 | 高/中/低 | 高/中/低 | |||||
稳定性 | |||||||
成本 | |||||||
效率 | |||||||
体验 |