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,略過 Google Front End (GFE) 並提升效能。如要為應用程式啟用直接連線功能,必須符合下列條件:

  • 在 Compute Engine 或 Google Kubernetes Engine 上執行。
  • 使用全域端點
  • 在設定了路由和防火牆規則的網路中,允許輸出流量連到 34.126.0.0/182001:4860:8040::/42
  • 使用下列版本的用戶端程式庫:
    • Java:6.111.0 以上版本。
    • Go:1.88.0 以上版本。
  • 您用於應用程式的憑證具有 spanner.databases.get 權限。

如要啟用這項功能,請將 GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS 環境變數設為 true,或透過用戶端程式庫設定 (Java 中的 setEnableDirectAccess(true)、Go 中的 ClientConfig.EnableDirectAccess,或 JDBC 驅動程式中的連線屬性 enableDirectAccess=true) 啟用。

如要確認是否使用 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 擷取查詢延遲時間」。

後續步驟