关系
关系展示架构元素之间如何通信、依赖或交互。它们是架构文档的关键组成部分。
创建关系
拖放
- 将鼠标悬停在源元素上
- 从连接点(小圆圈)点击并拖动
- 放到目标元素上
- 关系将自动创建
右键菜单
- 右键点击源元素
- 选择"创建关系"
- 点击目标元素
关系属性
标签
标签描述关系所代表的含义:
- "发送订单到"
- "读取数据从"
- "使用…进行认证"
- "部署到"
最佳实践:
- 使用主动语态
- 具体说明流动的内容
- 保持简洁
技术
可选择指定技术或协议:
- "REST/HTTPS"
- "gRPC"
- "AMQP"
- "SQL/TCP"
- "WebSocket"
方向
关系的方向由箭头表示:
- 单向:单向通信(最常见)
- 双向:双向通信
关系样式
线条样式
- 实线:直接依赖或通信
- 虚线:可选或异步通信
颜色
使用颜色对关系进行分类:
- 蓝色表示数据流
- 绿色表示成功路径
- 红色表示错误处理
- 灰色表示可选
曲线与直线
- 曲线:适合复杂图表,避免重叠
- 直线:适合简单图表,更清晰
常见模式
请求-响应
Web App --"发起 API 调用 [REST/HTTPS]"--> API Server
事件驱动
Order Service --"发布事件 [AMQP]"--> Message Queue
Notification Service <--"订阅事件 [AMQP]"-- Message Queue
数据库访问
API Server --"读写数据 [SQL/TCP]"--> Database
外部 API
Payment Service --"处理支付 [REST/HTTPS]"--> Stripe API
跨层次关系
在组件层次查看时,关系可以跨越不同的容器:
- 组件可以连接到系统其他部分的容器
- 这有助于在不离开当前视图的情况下展示完整画面
技巧
不要过度连接
不是每个可能的关系都需要展示。重点关注:
- 主要数据流
- 重要的依赖关系
- 不明显的连接
对相关关系进行分组
如果多个元素以相同方式通信,考虑:
- 使用中间件(API 网关、消息队列)
- 使用叠加层进行分组
保持标签可读
- 调整标签位置避免重叠
- 使用较短的标签使图表更清晰
- 将详细信息放在元素描述中