📦 Service Dependency Mapper — 服务依赖映射器
v1.0.0从代码、配置和运行时数据中自动发现和映射服务依赖关系。生成依赖图,识别关键路径,找到单点故障...
运行时依赖
安装命令
点击复制技能文档
服务依赖映射器 在故障发生之前映射服务依赖项。从代码导入、配置文件、网络流量和运行时跟踪中自动发现依赖项 —— 然后生成依赖图、识别关键路径并评估影响范围。使用时: "映射我们的服务"、"什么依赖于什么"、"服务依赖图"、"影响范围分析"、"单点故障"、"如果X宕机会有什么影响"、"架构可视化",或在事件规划期间。
命令
- discover — 自动检测服务依赖项
步骤 2:运行时分析(如果可用) # Kubernetes 服务 kubectl get services -A -o json | python3 -c " 导入 json, sys svcs = json.load(sys.stdin)['items'] 对于 svc in svcs: ns = svc['metadata']['namespace'] name = svc['metadata']['name'] stype = svc['spec']['type'] ports = [str(p['port']) for p in svc['spec'].get('ports', [])] print(f'{ns}/{name} ({stype}) ports:{','.join(ports)}') " # 服务网格(Istio/Linkerd)— 实际流量依赖项 kubectl get destinationrules -A 2>/dev/null istioctl proxy-config cluster 2>/dev/null | grep -v "BlackHole\|PassthroughCluster"
步骤 3:构建依赖图 dependencies = { 'api-gateway': { 'depends_on': ['auth-service', 'user-service', 'order-service'], 'type': 'sync', # 同步 HTTP 调用 'criticality': 'critical', }, 'order-service': { 'depends_on': ['postgres', 'payment-service', 'kafka'], 'type': 'mixed', 'criticality': 'critical', }, 'notification-service': { 'depends_on': ['kafka', 'smtp-relay', 'redis'], 'type': 'async', 'criticality': 'low', }, }
步骤 4:生成依赖映射 # 服务依赖映射
图(文本表示)
[External Users] │ ▼ [api-gateway] ─sync──► [auth-service] ─sync──► [postgres-auth] │ │ │ ├─sync──► [user-service] ─sync──► [postgres-users] │ │ └─async─► [redis-cache] │ │ │ └─sync──► [order-service] ─sync──► [postgres-orders] │ │ └─sync──► [payment-service] ─► [Stripe API] │ │ │ └─async──► [kafka] │ │ │ ├──► [notification-service] ─► [SMTP] │ └──► [analytics-service] ─► [ClickHouse]关键路径
api-gateway → order-service → postgres-orders(故障发生在这里 = 订单无法下单)单点故障
- 🔴 postgres-orders — 无副本、单实例
- 🔴 api-gateway — 单入口点、无回退
- 🟡 kafka — 3 个代理,但无多可用区
- 🟡 Stripe API — 外部依赖项、无回退支付提供商
影响范围分析
| 如果这个失败... | 这些会中断... | 受影响的用户 | |-------------------|---------------|----------------| | postgres-orders | order-service, api-gateway(部分) | 100% 订单 | | auth-service | 所有经过身份验证的端点 | 100% 用户 | | kafka | 通知、分析 | 0%(优雅降级) | | redis-cache | user-service(慢,但不中断) | 0%(缓存未命中) | | Stripe API | payment-service、订单 | 100% 新订单 |- blast-radius — 分析服务故障的影响
- visualize — 生成图表输出
- health — 评估架构健康