可觀測性 中階

分散式追蹤是如何工作的?什麼是 Span 和 Trace ID?

AI 練習作答

為什麼需要分散式追蹤

在微服務架構中,一個用戶請求可能經過 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 評分