Lesson 5.4: 分布式追踪
学习目标
- 理解 Trace 和 Span 的概念
- 集成 OpenTelemetry
1. 核心概念
Service A (API Gateway)
│
├── Span: POST /api/order
│ ├── Context Propagation (Trace-ID, Span-ID)
│ │
│ ├── Service B (Order Service)
│ │ ├── Span: Validate Order
│ │ ├── Span: Create Order (DB)
│ │ └── Span: Publish Event (Kafka)
│ │
│ └── Service C (Payment Service)
│ ├── Span: Process Payment
│ └── Span: Update Balance
│
└── Response2. OpenTelemetry 集成
go
// 初始化 OTel
func initTracer() {
exporter, _ := otlptracehttp.New(context.Background())
tp := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
sdktrace.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceName("user-service"),
)),
)
otel.SetTracerProvider(tp)
}
