SkyWalking UI 的核心功能之一 —— Topology(服务拓扑图)。
这是理解微服务架构中“谁调用谁”的可视化利器,帮助你快速掌握系统依赖关系、识别调用瓶颈和潜在风险。
下面,我们对 Topology 页面进行深度探索,从“看懂图”到“用好图”,一步步带你掌握其核心价值与实战技巧。
🌐 SkyWalking UI 深度探索:Topology(服务拓扑图)
📌 访问路径:UI 首页 → 点击左侧菜单 “Topology”
一、什么是服务拓扑图?
服务拓扑图(Service Topology) 是 SkyWalking 自动生成的服务依赖关系图,它通过分析链路追踪数据,动态展示微服务之间的调用关系。
✅ 一句话:它告诉你“哪个服务调用了哪个服务”,以及调用的性能表现。
二、拓扑图核心元素解析(图文结合版)
┌─────────────┐ ┌─────────────┐ ┌─────────────────┐
│ Gateway │────▶│ OrderSvc │────▶│ PaymentService │
└─────────────┘ └─────────────┘ └─────────────────┘
│ │ ▲
│ ▼ │
│ ┌─────────────┐ ┌─────────────────┐
└──────────────▶│ UserSvc │ │ MySQL (DB) │
└─────────────┘ └─────────────────┘
🔹 节点(Node)—— 服务或组件
| 图标 | 类型 | 说明 |
|---|---|---|
| 🟦 圆角矩形 | 服务(Service) | 如 order-service、user-service |
| 🟨 六边形 | 数据库(Database) | 如 MySQL、Redis 实例 |
| 🟧 云形 | 消息队列 / MQ | 如 Kafka、RabbitMQ |
| 🟥 带边框矩形 | 外部服务(External) | 如第三方 API、DNS |
✅ 所有节点均由 Agent 自动上报生成,无需手动配置。
🔗 边(Edge)—— 调用关系
| 属性 | 说明 |
|---|---|
| 箭头方向 | 表示调用方向(A → B 表示 A 调用 B) |
| 线条粗细 | 表示调用量大小(越粗表示 QPS 越高) |
| 颜色 | 表示调用健康状态: 🟢 绿色:正常(错误率低) 🟡 黄色:警告(错误率升高) 🔴 红色:异常(错误率高或超时) |
三、关键性能指标展示(悬停查看)
将鼠标悬停在边(Edge) 上,可查看该调用链路的实时性能数据:
| 指标 | 含义 |
|---|---|
| Throughput | 每分钟请求数(RPM) |
| Response Time (P99) | 99% 的请求响应时间 ≤ 该值 |
| SLA (Success Rate) | 成功率 = (成功数 / 总数) |
| Calls | 总调用次数(可选时间段) |
💡 示例:
悬停在OrderSvc → PaymentService的边上,看到:
- P99: 1.2s ← 可能存在性能瓶颈
- SLA: 95.3% ← 错误率偏高,需关注
四、拓扑图的核心价值(为什么重要?)
| 使用场景 | 拓扑图如何帮助 |
|---|---|
| 🔍 架构梳理 | 新接手项目?一键看清服务依赖,告别“文档过时” |
| 🚨 故障定位 | 某服务异常 → 查看其上下游 → 快速判断是上游压力大还是下游阻塞 |
| ⚠️ 循环依赖检测 | 发现 A→B→C→A 这类危险调用链,避免雪崩风险 |
| 📈 性能瓶颈分析 | 找到“最粗最红”的边 → 定位高负载、高延迟的调用路径 |
| 🧩 下线影响评估 | 想下线某个服务?先看它被谁调用,避免误伤 |
| 🔐 安全审计 | 是否有服务直接调用外部 API?是否存在未授权访问? |
五、实战操作技巧
| 操作 | 方法 |
|---|---|
| 🔍 聚焦某个服务 | 点击节点,自动高亮其上下游关系 |
| 🧮 查看完整调用链 | 点击边 → 弹出窗口 → 点击“View Traces” → 查看具体调用记录 |
| 🕰️ 切换时间范围 | 顶部选择“Last 5 mins”、“Last 1 hour”等,观察历史依赖变化 |
| 🎯 过滤服务 | 支持按服务名搜索,快速定位 |
| 🖼️ 导出图像 | 部分版本支持右键导出为 PNG/SVG(可用于架构文档) |
| 🔄 自动刷新 | 设置自动刷新(如 30s),监控实时变化 |
六、典型问题识别案例
📌 案例 1:发现“幽灵服务”调用数据库
- 现象:拓扑图中某个服务直接调用 MySQL
- 风险:违反分层架构(应通过 DAO 层),可能绕过监控
- 动作:审查代码,引入中间件或代理层
📌 案例 2:PaymentService 成为“热点中心”
- 现象:多个服务都调用它,边很粗
- 风险:单点瓶颈,扩容困难
- 动作:考虑拆分、缓存、异步化
📌 案例 3:出现红色边(高错误率)
- 现象:
OrderSvc → UserSvc显示红色 - 动作:
- 点击边 → 查看错误率
- 进入 Trace → 找到失败请求
- 关联日志 → 定位异常堆栈
七、拓扑图 vs 调用链(Trace)的区别
| 维度 | 拓扑图(Topology) | 调用链(Trace) |
|---|---|---|
| 视角 | 宏观:整体系统依赖 | 微观:单个请求流转 |
| 用途 | 架构分析、瓶颈识别 | 根因定位、排错 |
| 数据粒度 | 服务级 | 请求级(Trace ID) |
| 更新频率 | 实时聚合 | 按需查询 |
✅ 最佳实践:先看拓扑图发现问题方向,再查调用链精确定位
✅ 总结:拓扑图使用口诀
“一看依赖结构,二查调用热度,三盯异常连线,四溯调用链路”
拓扑图是你的 “系统地图”,让你在复杂的微服务森林中不迷路。
3922

被折叠的 条评论
为什么被折叠?



