En esta página, se proporciona una descripción general de los componentes de alto nivel que participan en una solicitud de Spanner y cómo cada componente puede afectar la latencia.
Solicitudes a la API de Spanner
Entre los componentes de alto nivel que se usan para realizar una solicitud a la API de Spanner, se incluyen los siguientes:
Bibliotecas cliente de Spanner, que proporcionan una capa de abstracción sobre gRPC y controlan los detalles de comunicación del servidor, como la administración de sesiones, las transacciones y los reintentos.
Google Front End (GFE), que es un servicio de infraestructura común para todos los servicios de Google Cloud , incluido Spanner El GFE verifica que se detengan todas las conexiones de seguridad de la capa de transporte (TLS) y aplica protecciones contra ataques de denegación del servicio. Para obtener más información sobre el GFE, consulta Google Front End Service.
El frontend de la API de Spanner (AFE), que realiza varias verificaciones en la solicitud a la API (incluidas la autenticación, la autorización y las verificaciones de cuota), y mantiene los estados de las sesiones y las transacciones.
La base de datos de Spanner, que ejecuta lecturas y escrituras en la base de datos.
Cuando realizas una llamada de procedimiento remoto a Spanner, las bibliotecas cliente de Spanner preparan la solicitud a la API. Luego, la solicitud de API pasa por el GFE y el AFE de Spanner antes de llegar a la base de datos de Spanner.
Si mides y comparas las latencias de las solicitudes entre los diferentes componentes y la base de datos, puedes determinar qué componente está causando el problema. Estas latencias incluyen las latencias de extremo a extremo del cliente, del GFE, de la solicitud a la API de Spanner y de la consulta.

En las siguientes secciones, se explica cada tipo de latencia que se muestra en el diagrama anterior.
Latencia de extremo a extremo
La latencia de extremo a extremo es el período (en milisegundos) entre el primer byte de la solicitud de la API de Spanner que el cliente envía a la base de datos (a través de GFE y el frontend de la API de Spanner) y el último byte de respuesta que el cliente recibe de la base de datos.

La métrica
spanner.googleapis.com/client/operation_latencies proporciona el tiempo entre el primer byte de la solicitud de API
enviada y el último byte de la respuesta recibida. Esto incluye los reintentos que realiza la biblioteca cliente.
Para obtener más información, consulta Cómo ver y administrar las métricas del cliente.
Latencia de GFE
La latencia de Google Front End (GFE) es el período (en milisegundos) entre el momento en que la red de Google recibe una llamada a procedimiento remoto del cliente y el momento en que GFE recibe el primer byte de la respuesta. Esta latencia no incluye ningún protocolo de enlace TCP/SSL.

Cada respuesta de Spanner (REST o gRPC) incluye un encabezado que contiene el tiempo total entre la GFE y el backend (el servicio de Spanner) para la solicitud y la respuesta. Esto ayuda a diferenciar mejor la fuente de la latencia entre el cliente y el GFE.
La métrica spanner.googleapis.com/client/gfe_latencies captura y expone la latencia de GFE para las solicitudes de Spanner.
Para obtener más información, consulta Cómo ver y administrar las métricas del cliente.
Latencia de solicitudes de la API de Spanner
La latencia de la solicitud de la API de Spanner es el período (en segundos) que transcurre desde que el AFE de Spanner recibe el primer byte de una solicitud hasta que el frontend de la API de Spanner envía el último byte de una respuesta. La latencia incluye el tiempo necesario para procesar las solicitudes a la API en el backend de Spanner y en la capa de la API. Sin embargo, esta latencia no incluye la sobrecarga de red o del proxy inverso entre los clientes y los servidores de Spanner.

La métrica spanner.googleapis.com/api/request_latencies captura y expone la latencia del AFE de Spanner para las solicitudes de Spanner. Para obtener más información, consulta Métricas de Spanner.
Latencia de las consultas
La latencia de la consulta es el tiempo (en milisegundos) que se tarda en ejecutar consultas en SQL en la base de datos de Spanner.

La latencia de las consultas está disponible para la API de executeSql.
Si el parámetro
QueryMode
se establece en WITH_STATS o WITH_PLAN_AND_STATS,
los ResultSetStats
de Spanner están disponibles en las respuestas. ResultSetStats incluye el tiempo transcurrido para ejecutar consultas en la base de datos de Spanner.
Para capturar y visualizar la latencia de las consultas, consulta Cómo capturar la latencia de las consultas con OpenTelemetry.
¿Qué sigue?
- Aprende a identificar los puntos de latencia en los componentes de Spanner.