Skip to content
ADP
API Design PrincipleBETA

[ADP-142] X-Request-Id

概述

本文件建立了在我們系統中使用 X-Request-Id 標頭來追蹤客戶端和伺服器之間請求的指導方針。使用 X-Request-Id 旨在提高可追溯性、改善除錯流程,並確保在分散式服務和微服務中一致地追蹤請求。

指導

定義

X-Request-Id 是一個 HTTP 標頭,用於為每個請求攜帶唯一標識符。雖然不是標準,但它是一個被廣泛採用的慣例。這個標識符允許在處理請求的不同服務和系統之間追蹤和關聯日誌。

要求

  • 客戶端應(SHOULD)為每個傳出請求生成唯一的 X-Request-Id
    • 如果客戶端未生成 X-Request-Id,接收請求的第一個伺服器應(SHOULD)生成唯一的 X-Request-Id 並將其包含在回應和任何後續請求中。
  • 任何接收帶有 X-Request-Id 的請求的服務(包括微服務)應(SHOULD)將此標頭以相同的值傳播到參與處理請求的任何下游服務或元件。
    • 一旦為特定請求流程設置了 X-Request-Id,就不得更改。
  • 所有服務(包括微服務)應(SHOULD)在其日誌中包含 X-Request-Id。這允許在不同服務之間關聯日誌,使追蹤請求的整個生命週期變得更容易。
    • 監控和警報系統應配置為使用 X-Request-Id 進行追蹤和除錯。
  • X-Request-Id 應(SHOULD)為 UUID(通用唯一標識符),以確保所有請求的唯一性。
    • 例如:X-Request-Id: 123e4567-e89b-12d3-a456-426614174000

實施考慮

  • 確保負載平衡器和 API Gateway 配置為保留 X-Request-Id 標頭。

設計思考

有一些替代的自定義標頭,如 X-Flow-IdX-Correlation-Id,但它們不太常見,所以我們在這裡不考慮它們。請參見使用統計:

參考資料