可觀測性 中階
分散式追蹤是如何工作的?什麼是 Span 和 Trace ID?
為什麼需要分散式追蹤
在微服務架構中,一個用戶請求可能經過 10 個服務。當請求失敗或變慢時,傳統日誌只能看到各服務的片段,很難拼出完整路徑。分散式追蹤解決了這個問題。
核心概念
Trace(追蹤):代表一次完整請求的端對端路徑,由唯一的 Trace ID 標識。
Span(跨度):追蹤中的一個操作單元,記錄:
- 操作名稱
- 開始/結束時間(計算延遲)
- 狀態(成功/失敗)
- 標籤(HTTP method、DB query 等)
- Parent Span ID(建立樹狀結構)
Context Propagation(上下文傳播):Trace ID 和 Parent Span ID 透過 HTTP Header 在服務間傳遞(W3C Trace Context 標準:traceparent header)。
追蹤可視化
一個請求的 Trace 通常顯示為甘特圖(Gantt chart):
- 橫軸為時間
- 每個服務的 Span 顯示為水平條
- 可以清楚看到哪個服務最耗時
OpenTelemetry
開放標準,統一了 Metrics、Logs、Traces 的採集 API 和 SDK。
優點:廠商中立,不綁定特定後端(可輸出至 Jaeger、Zipkin、Grafana Tempo)
實作要點
關聯 ID 策略:在請求進入系統時生成 Trace ID,透過所有日誌的結構化欄位關聯,即使不用追蹤工具也能在日誌中搜尋。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
