Questa pagina fornisce una panoramica dei componenti di alto livello coinvolti in una richiesta Spanner e di come ogni componente può influire sulla latenza.
Richieste API Spanner
I componenti di alto livello utilizzati per creare una richiesta API Spanner includono:
Librerie client Spanner, che forniscono un livello di astrazione sopra gRPC e gestiscono i dettagli di comunicazione del server, come la gestione delle sessioni, le transazioni e i tentativi.
Google Front End (GFE), un servizio di infrastruttura comune a tutti i Google Cloud servizi, incluso Spanner. GFE verifica che tutte le connessioni TLS (Transport Layer Security) siano interrotte e applica protezioni contro gli attacchi DoS. Per saperne di più su GFE, consulta Servizio Google Front End.
Il frontend dell'API Spanner (AFE), che esegue vari controlli sulla richiesta API (inclusi autenticazione, autorizzazione e quota controlli) e gestisce sessioni e stati delle transazioni.
Il database Spanner, che esegue letture e scritture nel database.
Quando effettui una chiamata di procedura remota a Spanner, le librerie client Spanner preparano la richiesta API. La richiesta API passa attraverso GFE e Spanner AFE prima di raggiungere il database Spanner.
Misurando e confrontando le latenze delle richieste tra i diversi componenti e il database, puoi determinare quale componente sta causando il problema. Queste latenze includono le latenze end-to-end del client, GFE, delle richieste API Spanner e delle query.

Le sezioni seguenti spiegano ogni tipo di latenza visualizzato nel diagramma precedente.
Connettività diretta
Il traffico delle applicazioni che soddisfa determinati criteri può essere indirizzato direttamente a Spanner, bypassando Google Front End (GFE) e ottimizzando le prestazioni. La connettività diretta può essere attivata per le applicazioni che soddisfano i seguenti criteri:
- In esecuzione su Compute Engine o Google Kubernetes Engine.
- Utilizza l'endpoint globale.
- In una rete configurata con route e regole firewall che consentono al traffico in uscita di raggiungere
34.126.0.0/18e2001:4860:8040::/42. - Utilizza le versioni della libreria client:
- Java: 6.111.0 o versioni successive.
- Go: 1.88.0 o versioni successive.
- Le credenziali che utilizzi per le applicazioni dispongono dell'autorizzazione
spanner.databases.get.
Questa funzionalità può essere abilitata impostando la variabile di ambiente
GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS su true
o tramite la configurazione della libreria client (
setEnableDirectAccess(true)
in Java, ClientConfig.EnableDirectAccess
in Go o la proprietà di connessione enableDirectAccess=true nel
driver JDBC).
Per verificare se viene utilizzata la connettività diretta di Spanner, monitora le etichette di utilizzo nelle metriche lato client.
Latenza end-to-end
La latenza end-to-end è il periodo di tempo (in millisecondi) tra il primo byte della richiesta API Spanner che il client invia al database (tramite GFE e il front-end dell'API Spanner) e l'ultimo byte della risposta che il client riceve dal database.

La metrica
spanner.googleapis.com/client/operation_latencies
fornisce il tempo che intercorre tra il primo byte della richiesta API
inviata e l'ultimo byte della risposta ricevuta. Sono inclusi i tentativi eseguiti
dalla libreria client.
Per saperne di più, vedi Visualizzare e gestire le metriche lato client.
Latenza GFE
La latenza di Google Front End (GFE) è il periodo di tempo (in millisecondi) tra il momento in cui la rete Google riceve una chiamata di procedura remota dal client e il momento in cui GFE riceve il primo byte della risposta. Questa latenza non include alcun handshake TCP/SSL.

Ogni risposta di Spanner (REST o gRPC) include un'intestazione che contiene il tempo totale tra GFE e il backend (il servizio Spanner) per la richiesta e la risposta. Ciò consente di distinguere meglio l'origine della latenza tra il client e GFE.
La metrica spanner.googleapis.com/client/gfe_latencies acquisisce ed espone la latenza GFE per le richieste Spanner.
Per saperne di più, vedi Visualizzare e gestire le metriche lato client.
Latenza delle richieste API Spanner
La latenza delle richieste API Spanner è il periodo di tempo (in secondi) che intercorre tra il momento in cui Spanner AFE riceve il primo byte di una richiesta e il momento in cui il frontend dell'API Spanner invia l'ultimo byte di una risposta. La latenza include il tempo necessario per l'elaborazione delle richieste API sia nel backend Spanner sia nel livello API. Tuttavia, questa latenza non include l'overhead di rete o del proxy inverso tra i client e i server Spanner.

La metrica spanner.googleapis.com/api/request_latencies acquisisce
ed espone la latenza AFE di Spanner per le richieste
Spanner. Per ulteriori informazioni, consulta Metriche di Spanner.
Latenza query
La latenza delle query è il tempo (in millisecondi) necessario per eseguire query SQL nel database Spanner.

La latenza delle query è disponibile per l'API executeSql.
Se il parametro
QueryMode
è impostato su WITH_STATS o WITH_PLAN_AND_STATS,
allora
ResultSetStats
di Spanner sono disponibili nelle risposte. ResultSetStats include il tempo
trascorso per l'esecuzione delle query nel database Spanner.
Per acquisire e visualizzare la latenza delle query, consulta Acquisire la latenza delle query con OpenTelemetry.
Passaggi successivi
- Scopri come identificare i punti di latenza nei componenti Spanner.