[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-Id
和 X-Correlation-Id
,但它們不太常見,所以我們在這裡不考慮它們。請參見使用統計:
- https://webtechsurvey.com/response-header/x-request-id
- https://webtechsurvey.com/response-header/x-flow-id
- https://webtechsurvey.com/response-header/x-correlation-id