顺序图是什么
顺序图按时间顺序展示若干对象或参与者之间的消息交互,横轴是参与方,纵轴是时间。生命线代表一个参与实例,生命线上的激活条代表其执行期,实心箭头表示同步消息,开放箭头表示异步消息,虚线开放箭头通常是返回消息。它适合把“一次请求到底经过了谁、在哪里超时、异常怎么向上传递”讲清楚,但只描述单个交互场景,不能代替状态机。
基本信息
| 归属 | UML 2.5.1 交互图之一,与通信图、时序图并列 |
|---|---|
| 基本元素 | 参与方、生命线、激活条、消息、组合片段 |
| 消息类型 | 同步消息、异步消息、返回消息、自调用消息 |
| 组合片段 | alt 分支、opt 可选、loop 循环、par 并发、break 中断 |
| 常见工具 | PlantUML、Mermaid、draw.io、IDE 内置建模插件 |
Mermaid 示例
Mermaid 示例
sequenceDiagram
participant C as 客户端
participant O as 订单服务
participant P as 支付服务
C->>O: 提交订单
O->>P: 创建支付单
alt 支付单创建成功
P-->>O: 支付单号
O-->>C: 201 Created
else 超时或失败
O-->>C: 503 稍后重试
end常用组合片段
| 片段 | 含义 | 使用注意 |
|---|---|---|
| alt | 条件互斥分支 | 每个分支都要写明触发条件,避免只画成功分支 |
| opt | 可选执行 | 用于可缺省步骤,不要用它承担分支语义 |
| loop | 重复执行 | 标注循环次数上限或退出条件 |
| par | 并发执行 | 并发分支共享资源时要标注竞争与锁 |
| break | 中断退出 | 常用于异常提前结束,需要写出后续处理 |
典型使用场景
- 接口时序评审:确认调用顺序、参数传递与返回结构
- 超时与重试设计:把超时点、重试次数与降级路径画在同一张图上
- 异常分支评审:补出失败、超时、部分成功等分支,避免只画顺路径
- 排查线上问题:按实测日志重绘真实时序,与设计图对比找差异
- 新人上手讲解:用一张图说明一次请求经过了哪些组件
- 性能分析:标注每段调用耗时,定位瓶颈在本地计算还是下游等待
顺序图与通信图表达的信息等价,只是侧重不同:顺序图突出时间顺序,通信图突出对象之间的连接关系,二者可按读者偏好选用。
只画正常路径的顺序图会掩盖真正的风险;评审时必须把超时、重试、部分成功与幂等处理一并画出,否则方案在故障场景下不成立。