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 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ù sul GFE, vedi Servizio Google Front End.

  • Il frontend dell'API Spanner (AFE), che esegue vari controlli sulla richiesta API (inclusi controlli di autenticazione, autorizzazione e quota) 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. Quindi, la richiesta API passa sia attraverso GFE che 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 la latenza end-to-end del client, GFE, delle richieste API Spanner e delle query.

Diagramma dell'architettura di Spanner.

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

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.

Diagramma dell'architettura di Spanner per la latenza end-to-end.

La metrica spanner.googleapis.com/client/operation_latencies fornisce il tempo trascorso 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) che intercorre 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.

Diagramma dell'architettura di Spanner per la latenza di GFE.

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 l'AFE Spanner 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.

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

La metrica spanner.googleapis.com/api/request_latencies acquisisce ed espone la latenza AFE di Spanner per le richieste Spanner. Per saperne di più, consulta Metriche di Spanner.

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 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