Puntos de latencia en una solicitud de Spanner

En esta página, se ofrece una descripción general de los componentes de alto nivel involucrados 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 por encima de gRPC y controlan los detalles de la 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 a todos los servicios de Google Cloud, incluido Spanner. GFE verifica que todas las conexiones de seguridad de la capa de transporte (TLS) se detengan y aplica protecciones contra ataques de denegación del servicio. Para obtener más información sobre GFE, consulta Servicio de Google Front End.

  • El frontend de la API de Spanner, que realiza varias verificaciones en la solicitud a la API (incluidas las verificaciones de autenticación, autorización y cuota) y mantiene los estados de las sesiones y las transacciones.

  • La base de datos de Spanner, que ejecuta las operaciones de lectura y escritura 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 a la API pasa por el GFE y el frontend de la API de Spanner antes de llegar a la base de datos de Spanner.

Mediante la medición y comparación de las latencias de solicitud entre los diferentes componentes y la base de datos, puedes determinar cuál es el componente que causa el problema. Estas latencias incluyen el recorrido de ida y vuelta del cliente, GFE, la solicitud a la API de Spanner y las latencias de consulta.

Diagrama de la arquitectura de Spanner.

En las siguientes secciones, se explica cada tipo de latencia que ves en el diagrama anterior.

Latencia de ida y vuelta del cliente

La latencia de ida y vuelta del cliente es el tiempo (en milisegundos) entre el primer byte de la solicitud a la API de Spanner que el cliente envía a la base de datos (a través del GFE y el frontend de la API de Spanner) y el último byte de respuesta que recibe el cliente de la base de datos.

Diagrama de la arquitectura de Spanner para la latencia de ida y vuelta del cliente.

La métrica grpc.io/client/roundtrip_latency proporciona el tiempo entre el primer byte de la solicitud a la API que se envía al último byte de la respuesta recibida.

Para capturar y visualizar la latencia de este componente, consulta Captura y visualiza la latencia de ida y vuelta del cliente con OpenTelemetry o con OpenCensus.

Latencia de GFE

La latencia de Google Front End (GFE) es el tiempo (en milisegundos) que transcurre entre el momento en que la red de Google recibe una llamada de procedimiento remoto del cliente y el momento en el que GFE recibe el primer byte de la respuesta. Esta latencia no incluye ningún protocolo de enlace TCP/SSL.

Diagrama de la arquitectura de Spanner para la latencia de GFE.

Cada respuesta de Spanner, ya sea REST o gRPC, incluye un encabezado que contiene el tiempo total entre GFE y el backend (el servicio de Spanner) para la solicitud y la respuesta. Esto ayuda a diferenciar mejor el origen de la latencia entre el cliente y la red de Google.

La métrica spanner/gfe_latency captura y expone la latencia de GFE para las solicitudes de Spanner.

Para capturar y visualizar la latencia de este componente, consulta Cómo capturar y visualizar la latencia de GFE con OpenTelemetry o con OpenCensus.

Latencia de solicitud a la API de Spanner

La latencia de solicitudes a la API de Spanner es la cantidad de tiempo (en segundos) entre el primer byte de solicitud que recibe el frontend de la API de Spanner y el último byte de respuesta que envía el frontend de la API de Spanner. 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 de proxy inverso entre los clientes y servidores de Spanner.

Diagrama de la arquitectura de Spanner para la latencia de solicitudes a la API de Spanner.

La métrica spanner.googleapis.com/api/request_latencies captura y expone la latencia del frontend de la API de Spanner para las solicitudes de Spanner.

Para capturar y visualizar la latencia de este componente, consulta Captura y visualiza la latencia de solicitud a la API de Spanner con OpenTelemetry o con OpenCensus.

Latencia de las consultas

La latencia de las consultas es el tiempo (en milisegundos) que se tarda en ejecutar consultas de SQL en la base de datos de Spanner.

Diagrama de la arquitectura de Spanner para la latencia de las consultas.

La latencia de las consultas está disponible para la API de executeSql.

Si el parámetro QueryMode se establece en PROFILE, los ResultSetStats de Spanner están disponibles en las respuestas.

Configurar QueryMode como PROFILE muestra el plan de consultas y las estadísticas de ejecución junto con los resultados. Además, ResultSetStats incluye el tiempo transcurrido para ejecutar consultas en la base de datos de Spanner.

Para capturar y visualizar la latencia de este componente, consulta Cómo capturar y visualizar la latencia de las consultas con OpenTelemetry o con OpenCensus.

¿Qué sigue?