Punti di latenza in una richiesta Spanner

Questa pagina fornisce una panoramica dei componenti di alto livello coinvolti in una richiesta di Spanner e del modo in cui ogni componente può influire sulla latenza.

Richieste API Spanner

I componenti di alto livello utilizzati per effettuare una richiesta API Spanner includono:

  • Librerie client di Spanner, che forniscono un livello di astrazione su gRPC e gestiscono i dettagli delle comunicazioni del server, come la gestione delle sessioni, le transazioni e i nuovi tentativi.

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

  • Il frontend dell'API Spanner, che esegue vari controlli sulla richiesta API (inclusi autenticazione, autorizzazione e controlli della quota) e gestisce gli stati di sessioni e transazioni.

  • Il database Spanner, che esegue letture e scritture nel database.

Quando effettui una chiamata di procedura remota a Spanner, le librerie client di Spanner preparano la richiesta API. Quindi, la richiesta API passa attraverso il frontend del GFE e dell'API Spanner prima di raggiungere il database Spanner.

Misurando e confrontando le latenze delle richieste tra i diversi componenti e il database, puoi determinare il componente che causa il problema. Queste latenze includono round trip del client, GFE, richiesta API Spanner e latenze delle query.

Diagramma dell'architettura Spanner.

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

Latenza di round trip client

La latenza di round trip client è il tempo (in millisecondi) che intercorre tra il primo byte della richiesta dell'API Spanner che il client invia al database (tramite il GFE e il front-end dell'API Spanner) e l'ultimo byte di risposta che il client riceve dal database.

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

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

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisizione e visualizzazione della 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) che intercorre tra il momento in cui la rete Google riceve una chiamata di procedura remota dal client e il momento in cui il GFE riceve il primo byte della risposta. Questa latenza non include alcun handshake TCP/SSL.

Diagramma dell'architettura Spanner per la latenza GFE.

Ogni risposta da Spanner, che sia REST o gRPC, include un'intestazione che contiene il tempo totale tra GFE e il backend (il servizio Spanner) sia per la richiesta che per la risposta. Questo consente di distinguere meglio la fonte della latenza tra il client e la rete Google.

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

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

Latenza richieste API Spanner

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

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

La metrica spanner.googleapis.com/api/request_latencies acquisisce ed espone la latenza frontend dell'API Spanner per le richieste di Spanner.

Per acquisire e visualizzare la latenza di questo componente, consulta Acquisire e visualizzare 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 le query SQL nel database Spanner.

Diagramma dell'architettura Spanner per la latenza delle query.

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

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

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

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

Passaggi successivi