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), un servicio de infraestructura común a todos los servicios de Google Cloud, incluido Spanner. El El GFE verifica que todas las conexiones de seguridad de la capa de transporte (TLS) estén detenidas. y aplica protecciones contra ataques de denegación del servicio. Para obtener más información sobre el 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 las sesiones y los estados de las transacciones.
La base de datos de Spanner, que ejecuta 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 de 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 diferentes componentes y la base de datos, puedes determinar qué componente está causando el problema. Estas latencias incluyen las de ida y vuelta del cliente, del GFE, de la solicitud a la API de Spanner y de las consultas.
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 la cantidad de 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 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.
El grpc.io/client/roundtrip_latency
proporciona el tiempo entre el primer byte de la solicitud a la API enviada 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 la cantidad de tiempo (en milisegundos) entre cuando la red de Google recibe una llamada de procedimiento remoto del cliente y cuando GFE recibe el primer byte de la respuesta. Esta latencia no se incluyen cualquier protocolo de enlace TCP/SSL.
Cada respuesta de Spanner, ya sea REST o gRPC, incluye un encabezado que contenga el tiempo total entre GFE y el backend (el Spanner) para la solicitud y la respuesta. Esto ayuda a diferenciar mejor la fuente de la latencia entre el cliente y la red de Google.
El spanner/gfe_latency
métrica 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 de la API de Spanner
La latencia de solicitud a la API de Spanner es la cantidad de tiempo (en segundos) entre el primer byte de solicitud que envía el frontend de la API de Spanner recibe y el último byte de respuesta que la API de Spanner que envía el frontend. 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 ni del proxy inverso entre clientes y servidores 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.
Si quieres capturar y visualizar la latencia de este componente, consulta Captura y visualiza la latencia de las solicitudes 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 SQL en la base de datos de Spanner.
La latencia de consulta está disponible para la API de executeSql.
Si el parámetro QueryMode
se establece en PROFILE
, los ResultSetStats
de Spanner estarán disponibles en las respuestas.
Si configuras QueryMode
como PROFILE
, se muestra la consulta
el plan de trabajo 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.
Si quieres capturar y visualizar la latencia de este componente, consulta Captura y visualiza la latencia de las consultas con OpenTelemetry o con OpenCensus.
¿Qué sigue?
- Obtén información para identificar los puntos de latencia en los componentes de Spanner.