Punti di latenza in una richiesta Spanner

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 effettuare una richiesta all'API Spanner includono:

  • Librerie client Spanner, che forniscono un livello di astrazione sopra gRPC e gestiscono i dettagli di comunicazione del server, come gestione delle sessioni, transazioni e tentativi di nuovo invio.

  • Google Front End (GFE), un servizio di infrastruttura comune a tutti i servizi Google Cloud, incluso Spanner. GFE verifica che tutte le connessioni Transport Layer Security (TLS) siano interrotte e applica protezioni contro gli attacchi di tipo Denial of Service. Per scoprire di più sul servizio GFE, consulta Google Front End Service.

  • Il frontend dell'API Spanner, che esegue vari controlli sulla richiesta dell'API (inclusi controlli di autenticazione, autorizzazione e quote) e gestisce le sessioni e gli 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. Quindi, la richiesta dell'API passa sia per il frontend GFE sia per l'API Spanner prima di raggiungere il database Spanner.

Misurando e confrontando le latenze delle richieste tra i diversi componenti e il database, puoi determinare quale componente causa il problema. Queste latenze includono il viaggio di andata e ritorno del client, GFE, la richiesta dell'API Spanner e le latenze delle query.

Diagramma dell'architettura di Spanner.

Le sezioni seguenti spiegano ogni tipo di latenza visualizzato nel diagramma precedente.

Latenza di andata e ritorno del client

La latenza di andata e ritorno del client è il periodo di tempo (in millisecondi) tra il primo byte della richiesta dell'API Spanner inviata dal client al database (tramite il front-end GFE e l'API Spanner) e l'ultimo byte della risposta che il client riceve dal database.

Diagramma dell'architettura di Spanner per la latenza di andata e ritorno del client.

La metrica grpc.io/client/roundtrip_latency fornisce il tempo che intercorre tra il primo byte della richiesta API inviata e l'ultimo byte della risposta ricevuta.

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisire la latenza di andata e ritorno del client con OpenTelemetry o con OpenCensus.

Latenza GFE

La latenza di Google Front End (GFE) è il periodo di tempo (in millisecondi) tra il momento in cui la rete di 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.

Diagramma dell'architettura di Spanner per la latenza GFE.

Ogni risposta di Spanner, che si tratti di REST o gRPC, include un'intestazione contenente il tempo totale tra il GFE e il backend (il servizio Spanner) sia per la richiesta che per la risposta. In questo modo, è possibile distinguere meglio l'origine della latenza tra il client e la rete di Google.

La metrica spanner/gfe_latency cattura ed espone la latenza GFE per le richieste Spanner.

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisire la latenza GFE con OpenTelemetry o con OpenCensus.

Latenza delle richieste dell'API Spanner

La latenza della richiesta dell'API Spanner è il periodo di tempo (in secondi) tra il primo byte della richiesta ricevuto dal frontend dell'API Spanner e l'ultimo byte della risposta inviato dal frontend dell'API Spanner. La latenza include il tempo necessario per elaborare le richieste dell'API sia nel backend di Spanner sia nel livello API. Tuttavia, questa latenza non include il sovraccarico della rete o del proxy inverso tra i client e i server Spanner.

Diagramma dell'architettura di Spanner per la latenza delle richieste dell'API Spanner.

La metrica spanner.googleapis.com/api/request_latencies acquisisce e mostra la latenza del frontend dell'API Spanner per le richieste Spanner.

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisire la latenza delle richieste dell'API Spanner con OpenTelemetry o con OpenCensus.

Latenza query

La latenza delle query è il tempo (in millisecondi) necessario per eseguire query SQL nel database Spanner.

Diagramma dell'architettura di Spanner per la latenza delle query.

La latenza delle query è disponibile per l'API executeSql.

Se il parametro QueryMode è impostato su PROFILE, le query ResultSetStats di Spanner sono disponibili nelle risposte.

L'impostazione di QueryMode su PROFILE restituisce sia il piano della query sia le statistiche di esecuzione insieme ai risultati. Inoltre, ResultSetStats include il tempo trascorso per l'esecuzione delle query nel database Spanner.

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisire la latenza delle query con OpenTelemetry o con OpenCensus.

Passaggi successivi