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 架構圖。

grpc.io/client/roundtrip_latency 指標會提供從傳送 API 要求的第一個位元組,到收到回應的最後一個位元組之間的時間。

如要擷取及顯示這個元件的延遲時間,請參閱「使用 OpenTelemetry 擷取用戶端往返延遲時間」或「使用 OpenCensus 擷取用戶端往返延遲時間」。

GFE 延遲時間

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

GFE 延遲的 Spanner 架構圖。

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

這項指標會擷取並公開 Spanner 要求的 GFE 延遲時間。spanner/gfe_latency

如要擷取及顯示這個元件的延遲時間,請參閱「使用 OpenTelemetry 擷取 GFE 延遲時間」或「使用 OpenCensus 擷取 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 延遲時間。

如要擷取及顯示這個元件的延遲時間,請參閱使用 OpenTelemetry 擷取 Spanner API 要求延遲時間使用 OpenCensus 擷取 Spanner API 要求延遲時間

查詢延遲時間

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

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

查詢延遲時間適用於 executeSql API。

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

如要擷取及顯示這個元件的延遲時間,請參閱「使用 OpenTelemetry 擷取查詢延遲時間」或「使用 OpenCensus 擷取查詢延遲時間」。

後續步驟