Puntos de latencia en una solicitud de Spanner

En esta página se ofrece una descripción general de los componentes de alto nivel que intervienen en una solicitud de Spanner y de cómo puede afectar cada componente a la latencia.

Solicitudes a la API de Spanner

Los componentes de alto nivel que se usan para hacer una solicitud a la API de Spanner son los siguientes:

  • Las bibliotecas de cliente de Spanner, que proporcionan una capa de abstracción sobre gRPC y gestionan los detalles de la comunicación con el servidor, como la gestión de sesiones, las transacciones y los reintentos.

  • El frontend de Google (GFE), que es un servicio de infraestructura común a todos los Google Cloud servicios, incluido Spanner. El GFE verifica que se detengan todas las conexiones de Seguridad en la capa de transporte (TLS) y aplica protecciones contra ataques de denegación de servicio. Para obtener más información sobre GFE, consulta el artículo Servicio Google Front End.

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

  • La base de datos de Spanner, que ejecuta lecturas y escrituras en la base de datos.

Cuando haces una llamada a procedimiento remoto a Spanner, las bibliotecas de cliente de Spanner preparan la solicitud de la API. A continuación, la solicitud de la API pasa por GFE y AFE de Spanner antes de llegar a la base de datos de Spanner.

Si mide y compara las latencias de las solicitudes entre los distintos componentes y la base de datos, puede determinar qué componente está causando el problema. Estas latencias incluyen la latencia de ida y vuelta del cliente, la latencia de GFE, la latencia de la solicitud de la API de Spanner y la latencia de la consulta.

Diagrama de la arquitectura de Spanner.

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

Latencia de ida y vuelta del cliente

La latencia de ida y vuelta del cliente es el tiempo (en milisegundos) que transcurre 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 de GFE y del frontend de la API de Spanner) y el último byte de la respuesta que el cliente recibe 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 transcurrido entre el primer byte de la solicitud de la API enviada y el último byte de la respuesta recibida.

Para registrar y visualizar la latencia de este componente, consulta Registrar la latencia de ida y vuelta del cliente con OpenTelemetry o con OpenCensus.

Latencia de GFE

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

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

Todas las respuestas de Spanner, ya sean REST o gRPC, incluyen una cabecera que contiene el tiempo total entre el GFE y el backend (el servicio Spanner) tanto para la solicitud como para la respuesta. De esta forma, se puede diferenciar mejor la fuente de la latencia entre el cliente y la red de Google.

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

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

Latencia de solicitudes de la API de Spanner

La latencia de las solicitudes a la API de Spanner es el tiempo (en segundos) que transcurre entre el primer byte de la solicitud que recibe el AFE de Spanner y el último byte de la respuesta que envía el frontend de la API de Spanner. La latencia incluye el tiempo necesario para procesar las solicitudes de la API tanto en el backend de Spanner como en la capa de la API. Sin embargo, esta latencia no incluye la sobrecarga de la red o del proxy inverso entre los clientes y los servidores de Spanner.

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

La métrica spanner.googleapis.com/api/request_latencies registra y muestra la latencia de AFE de Spanner para las solicitudes de Spanner.

Para registrar y visualizar la latencia de este componente, consulta Registrar la latencia de las solicitudes de la API de Spanner con OpenTelemetry o con OpenCensus.

Latencia de la consulta

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

Si el parámetro QueryMode tiene el valor WITH_STATS o WITH_PLAN_AND_STATS, las ResultSetStats de Spanner estarán disponibles en las respuestas. ResultSetStats incluye el tiempo transcurrido para ejecutar consultas en la base de datos de Spanner.

Para registrar y visualizar la latencia de este componente, consulta Registrar la latencia de las consultas con OpenTelemetry o con OpenCensus.

Siguientes pasos