Pontos de latência num pedido do Spanner

Esta página oferece uma vista geral dos componentes de alto nível envolvidos num pedido do Spanner e como cada componente pode afetar a latência.

Pedidos da API Spanner

Os componentes de nível elevado usados para fazer um pedido da API Spanner incluem:

  • Bibliotecas de cliente do Spanner, que fornecem uma camada de abstração sobre o gRPC e processam os detalhes de comunicação do servidor, como a gestão de sessões, as transações e as novas tentativas.

  • O Google Front End (GFE), que é um serviço de infraestrutura comum a todos os serviços, incluindo o Spanner. Google Cloud O GFE verifica se todas as ligações Transport Layer Security (TLS) estão paradas e aplica proteções contra ataques de negação de serviço. Para saber mais acerca do GFE, consulte o serviço Google Front End.

  • O front-end da API Spanner (AFE), que realiza várias verificações no pedido da API (incluindo verificações de autenticação, autorização e quotas) e mantém as sessões e os estados das transações.

  • A base de dados do Spanner, que executa leituras e escritas na base de dados.

Quando faz uma chamada de procedimento remoto para o Spanner, as bibliotecas cliente do Spanner preparam o pedido da API. Em seguida, o pedido da API passa pelo GFE e pelo AFE do Spanner antes de chegar à base de dados do Spanner.

Ao medir e comparar as latências de pedidos entre diferentes componentes e a base de dados, pode determinar que componente está a causar o problema. Estas latências incluem a viagem de ida e volta do cliente, o GFE, o pedido da API Spanner e as latências de consulta.

Diagrama da arquitetura do Spanner.

As secções seguintes explicam cada tipo de latência que vê no diagrama anterior.

Latência de ida e volta do cliente

A latência de ida e volta do cliente é o período (em milissegundos) entre o primeiro byte do pedido da API Spanner que o cliente envia para a base de dados (através do GFE e do front-end da API Spanner) e o último byte da resposta que o cliente recebe da base de dados.

Diagrama de arquitetura do Spanner para a latência de ida e volta do cliente.

A métrica grpc.io/client/roundtrip_latency indica o tempo entre o primeiro byte do pedido da API enviado e o último byte da resposta recebida.

Para capturar e visualizar a latência deste componente, consulte o artigo Capture a latência de ida e volta do cliente com o OpenTelemetry ou com o OpenCensus.

Latência do GFE

A latência do front-end da Google (GFE) é o período (em milissegundos) entre o momento em que a rede Google recebe uma chamada de procedimento remoto do cliente e o momento em que o GFE recebe o primeiro byte da resposta. Esta latência não inclui nenhum handshake TCP/SSL.

Diagrama da arquitetura do Spanner para a latência da GFE.

Todas as respostas do Spanner, sejam REST ou gRPC, incluem um cabeçalho que contém o tempo total entre o GFE e o back-end (o serviço Spanner) para o pedido e a resposta. Isto ajuda a diferenciar melhor a origem da latência entre o cliente e a rede Google.

A métrica spanner/gfe_latency captura e expõe a latência do GFE para pedidos do Spanner.

Para capturar e visualizar a latência deste componente, consulte os artigos Capture a latência do GFE com o OpenTelemetry ou com o OpenCensus.

Latência do pedido da API Spanner

A latência do pedido da API Spanner é o período (em segundos) entre o primeiro byte do pedido que o AFE do Spanner recebe e o último byte da resposta que o front-end da API Spanner envia. A latência inclui o tempo necessário para processar pedidos da API no back-end do Spanner e na camada da API. No entanto, esta latência não inclui a sobrecarga de rede ou de proxy inverso entre os clientes e os servidores do Spanner.

Diagrama de arquitetura do Spanner para a latência de pedidos da API Spanner.

A métrica spanner.googleapis.com/api/request_latencies capta e expõe a latência da AFE do Spanner para pedidos do Spanner.

Para capturar e visualizar a latência deste componente, consulte o artigo Capture a latência do pedido da API Spanner com o OpenTelemetry ou com o OpenCensus.

Latência da consulta

A latência de consulta é o período de tempo (em milissegundos) necessário para executar consultas SQL na base de dados do Spanner.

Diagrama da arquitetura do Spanner para a latência de consultas.

A latência de consulta está disponível para a API executeSql.

Se o parâmetro QueryMode estiver definido como WITH_STATS ou WITH_PLAN_AND_STATS, os ResultSetStats do Spanner estão disponíveis nas respostas. ResultSetStats inclui o tempo decorrido para executar consultas na base de dados do Spanner.

Para capturar e visualizar a latência deste componente, consulte o artigo Capture a latência de consultas com o OpenTelemetry ou com o OpenCensus.

O que se segue?