Spanner 要求的延遲時間點

本頁面將概要介紹 Spanner 要求涉及的高階元件,以及每個元件如何影響延遲。

Spanner API 要求

用於提出 Spanner API 要求的高階元件包括:

  • Spanner 用戶端程式庫,可在 gRPC 頂端提供抽象層,並處理伺服器通訊詳細資料,例如工作階段管理、交易和重試。

  • Google Front End (GFE),這是所有 Google Cloud 服務 (包括 Spanner) 共用的基礎架構服務。GFE 會驗證所有傳輸層安全標準 (TLS) 連線是否已停止,並套用防範阻斷服務攻擊的保護措施。如要進一步瞭解 GFE,請參閱「 Google Front End Service」。

  • Spanner API 前端 (AFE),可對 API 要求執行各種檢查 (包括驗證、授權和配額檢查),並維護工作階段和交易狀態。

  • Spanner 資料庫,可執行資料庫的讀取和寫入作業。

當您對 Spanner 進行遠端程序呼叫時,Spanner 用戶端程式庫會準備 API 要求。接著,API 要求會通過 GFE 和 Spanner AFE,然後抵達 Spanner 資料庫。

您可以測量及比較不同元件和資料庫之間的請求延遲時間,判斷是哪個元件造成問題。這些延遲時間包括用戶端端對端、GFE、Spanner API 要求和查詢延遲時間。

Spanner 架構圖。

以下各節將說明上一個圖表中的每種延遲類型。

端對端延遲時間

端對端延遲時間是指從用戶端傳送至資料庫的 Spanner API 要求的第一個位元組 (透過 GFE 和 Spanner API 前端),到用戶端從資料庫接收回應的最後一個位元組之間的時間長度 (以毫秒為單位)。

端對端延遲的 Spanner 架構圖。

spanner.googleapis.com/client/operation_latencies 指標會提供從傳送 API 要求的第一個位元組,到收到回應的最後一個位元組之間的時間。包括用戶端程式庫執行的重試。

詳情請參閱「查看及管理用戶端指標」。

GFE 延遲時間

Google Front End (GFE) 延遲時間是指 Google 網路從用戶端接收遠端程序呼叫,到 GFE 接收回應的第一個位元組之間的時間長度 (以毫秒為單位)。這個延遲時間不含任何 TCP/SSL 交握。

GFE 延遲的 Spanner 架構圖。

Spanner (REST 或 gRPC) 的每個回應都包含一個標頭,其中含有要求和回應的 GFE 與後端 (Spanner 服務) 之間總時間。這有助於更清楚區分用戶端與 GFE 之間的延遲來源。

spanner.googleapis.com/client/gfe_latencies 指標會擷取並公開 Spanner 要求的 GFE 延遲時間。

詳情請參閱「查看及管理用戶端指標」。

Spanner API 要求延遲時間

Spanner API 要求延遲時間是指從 Spanner AFE 接收要求的第一個位元組,到 Spanner API 前端傳送回應的最後一個位元組,這段時間的長度 (以秒為單位)。延遲時間包括在 Spanner 後端和 API 層處理 API 要求所需的時間。不過,這個延遲時間不包括 Spanner 用戶端和伺服器之間的網路或反向 Proxy 額外負擔。

Spanner 架構圖,顯示 Spanner API 要求延遲時間。

spanner.googleapis.com/api/request_latencies 指標會擷取並公開 Spanner 要求的 Spanner AFE 延遲時間。詳情請參閱「Spanner 指標」。

查詢延遲時間

查詢延遲時間是指在 Spanner 資料庫中執行 SQL 查詢所需的時間長度 (以毫秒為單位)。

查詢延遲時間的 Spanner 架構圖。

executeSql API 提供查詢延遲時間。

如果 QueryMode 參數設為 WITH_STATSWITH_PLAN_AND_STATS,則回應中會提供 Spanner 的 ResultSetStatsResultSetStats 包含在 Spanner 資料庫中執行查詢所經過的時間。

如要擷取及顯示查詢延遲時間,請參閱「使用 OpenTelemetry 擷取查詢延遲時間」。

後續步驟