PlantUML 完整项目案例:一个微服务从 0 到 1
把之前所有 PlantUML 知识用到极致 —— 一份完整的电商订单微服务系统,从需求到上线的全套图表。
项目背景
假设我们要设计一个电商订单微服务:
- 订单生命周期:待付款 → 已付款 → 已发货 → 已签收 → 已完成 / 已退款
- 微服务拆分:订单 / 支付 / 库存 / 用户 / 推荐
- 数据存储:PostgreSQL + Redis + Kafka
- 部署:Kubernetes
下面 8 张图覆盖这个项目的关键阶段。
图 1:用例图 —— 业务范围
1 | @startuml |
评审:让 PM 检查是否覆盖全部业务场景。
图 2:C4 上下文 —— 系统与外部依赖
1 | @startuml |
评审:让架构组确认系统边界和外部依赖。
图 3:组件图 —— 内部模块
1 | @startuml |
评审:让 Tech Lead 检查服务边界划分。
图 4:类图 —— 领域模型
1 | @startuml |
评审:让架构组确认聚合根、关联、枚举。
图 5:状态图 —— 订单生命周期
1 | @startuml |
评审:让业务方对每个状态含义验收。
图 6:时序图 —— 下单完整流程
1 | @startuml |
评审:让技术评审者看跨服务调用的合理性。
图 7:部署图 —— K8s 拓扑
1 | @startuml |
评审:让 SRE 确认 HA / 副本 / 边界。
图 8:PR 描述里的时序图
1 | ## PR: 订单退款流程 |
图 9:CI 自动渲染
1 | # .github/workflows/plantuml-render.yml |
8 张图 + 1 个 CI = 完整项目档案:
1 | docs/ |
评审 checklist
让每张图各司其职
| 图 | 评审人 | 关注点 |
|---|---|---|
| 用例图 | PM / 业务 | 业务覆盖 |
| C4 上下文 | 架构师 | 系统边界 |
| 组件图 | Tech Lead | 模块拆分 |
| 类图 | 架构师 | 领域模型 |
| 状态图 | 业务 + 开发 | 业务规则 |
| 时序图 | 开发 | 调用关系 |
| 部署图 | SRE | HA / 副本 |
| PR 描述 | 评审者 | 改动理解 |
PR 中分别用哪张
- 新功能 → 用例图 + 时序图 + 类图更新
- 修复 bug → 状态图(说明 bug 在哪个状态)+ 时序图(说明修复在哪条路径)
- 基础设施变更 → 部署图更新
- 架构重构 → C4 + 组件图重新画
完整 case 实际用
把这一份实例项目塞给新人,让他们感受到「从需求到代码到上线」每一步都有图,省去读 100 页 wiki 的时间。
反模式
1. 一张大图包罗万象
1 | @startuml |
一张图承担 8 个视角,渲染慢 + 评审更慢。
2. 时序图只画成功路径
1 | @startuml |
不画失败路径,debug 时就要靠文字描述。
3. 部署图只有一张
部署图每次变动都更新,CI 自动 commit。一张图就是永远新鲜的当前状态。
一句话总结
PlantUML 整套实践不是「一张图」,是「多张图按阶段、读者、审查点拆分」。本文的 8 张图是一个完整模板,可以直接套用到任何微服务项目。
- 标题: PlantUML 完整项目案例:一个微服务从 0 到 1
- 作者: puml.online
- 创建于 : 2026-07-29 16:25:00
- 更新于 : 2026-08-14 21:34:29
- 链接: https://puml.online/blog/plantuml-real-project-case/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。