Cette page présente les composants généraux impliqués dans une requête Spanner et décrit la manière dont chaque composant peut influer sur la latence.
Requêtes de l'API Spanner
Voici une liste de composants de haut niveau utilisés pour effectuer une requête API Spanner:
Les bibliothèques clientes Spanner, qui fournissent une couche d'abstraction en plus de gRPC, et gèrent les détails de communication du serveur, tels que la gestion de session, les transactions et les nouvelles tentatives.
Google Front End (GFE), qui est un service d'infrastructure commun à tous les services Google Cloud, y compris Spanner. Le GFE vérifie que toutes les connexions TLS (Transport Layer Security) sont arrêtées et applique des protections contre les attaques par déni de service. Pour en savoir plus sur le GFE, consultez la page Service Google Front End.
L'interface de l'API Spanner, qui effectue diverses vérifications sur la requête API (y compris les vérifications d'authentification, d'autorisation et de quota), et conserve les sessions et les états des transactions.
La base de données Spanner, qui exécute les lectures et les écritures dans la base de données.
Lorsque vous effectuez un appel de procédure à distance à Spanner, les bibliothèques clientes Spanner préparent la requête API. La requête API passe ensuite par le GFE et l'interface de l'API Spanner avant d'atteindre la base de données Spanner.
En mesurant et en comparant les latences des requêtes entre différents composants et la base de données, vous pouvez déterminer quel composant est à l'origine du problème. Ces latences incluent l'aller-retour du client, les serveurs GFE, les requêtes API Spanner et les latences de requête.
Les sections suivantes décrivent chaque type de latence observé dans le schéma précédent.
Latence aller-retour du client
La latence aller-retour du client correspond à la durée (en millisecondes) entre le premier octet de la requête API Spanner que le client envoie à la base de données (via le GFE et l'interface de l'API Spanner) et le dernier octet de réponse que le client reçoit de la base de données.
La métrique grpc.io/client/roundtrip_latency
indique le temps écoulé entre le premier octet de la requête API envoyé et le dernier octet de la réponse reçue.
Pour capturer et visualiser la latence de ce composant, consultez la page Capturer et visualiser la latence aller-retour du client avec OpenTelemetry ou avec OpenCensus.
Latence du GFE
La latence du GFE (Google Front End) correspond au délai (en millisecondes) entre le moment où le réseau Google reçoit un appel de procédure à distance du client et le moment où le GFE reçoit le premier octet de la réponse. Cette latence n'inclut pas de handshake TCP/SSL.
Chaque réponse de Spanner, qu'elle soit REST ou gRPC, inclut un en-tête indiquant la durée totale écoulée entre le GFE et le backend (le service Spanner) pour la requête et la réponse. Cela permet de mieux différencier la source de la latence entre le client et le réseau Google.
La métrique spanner/gfe_latency
capture et expose la latence des GFE pour les requêtes Spanner.
Pour capturer et visualiser la latence de ce composant, consultez la page Capturer et visualiser la latence GFE avec OpenTelemetry ou avec OpenCensus.
Latence des requêtes API Spanner
La latence des requêtes API Spanner correspond à la durée (en secondes) entre le premier octet de la requête reçu par l'interface de l'API Spanner et le dernier octet de réponse envoyé par l'interface de l'API Spanner. Cette latence inclut le temps nécessaire au traitement des requêtes API dans le backend Spanner et dans la couche API. Toutefois, cette latence n'inclut pas la surcharge du réseau ou du proxy inverse entre les clients et les serveurs Spanner.
La métrique spanner.googleapis.com/api/request_latencies
capture et expose la latence de l'interface de l'API Spanner pour les requêtes Spanner.
Pour capturer et visualiser la latence de ce composant, consultez la page Capturer et visualiser la latence des requêtes API Spanner avec OpenTelemetry ou avec OpenCensus.
Latence des requêtes
La latence des requêtes correspond à la durée (en millisecondes) nécessaire pour exécuter des requêtes SQL dans la base de données Spanner.
La latence des requêtes est disponible pour l'API executeSql.
Si le paramètre QueryMode
est défini sur PROFILE
, les ResultSetStats
de Spanner sont disponibles dans les réponses.
Si vous définissez QueryMode
sur PROFILE
, vous obtenez le plan de requête, les statistiques d'exécution et les résultats. En outre, ResultSetStats
inclut le temps écoulé pour l'exécution de requêtes dans la base de données Spanner.
Pour capturer et visualiser la latence de ce composant, consultez la page Capturer et visualiser la latence des requêtes avec OpenTelemetry ou avec OpenCensus.
Étapes suivantes
- Découvrez comment identifier les points de latence dans les composants Spanner.