Esta página apresenta uma visão geral dos componentes de alto nível envolvidos em uma solicitação do Spanner e como cada componente pode afetar a latência.
Solicitações da API Spanner
Os componentes de alto nível usados para fazer uma API Spanner incluem:
Bibliotecas de cliente do Spanner, que fornecem uma camada de abstração sobre o gRPC e processam detalhes de comunicação do servidor, como gerenciamento de sessão, transações e novas tentativas.
O Google Front End (GFE), que é um serviço de infraestrutura comum a todos os serviços do Google Cloud, incluindo o Spanner. O GFE verifica se todas as conexões de segurança da camada de transporte (TLS) foram interrompidas e aplica proteções contra ataques de negação de serviço. Para saber mais sobre o GFE, consulte Serviço do Google Front End.
O front-end da API Spanner, que executa várias verificações na solicitação da API, incluindo verificações de autenticação, autorização e cota, e mantém sessões e estados de transação.
O banco de dados do Spanner, que executa leituras e gravações no banco de dados.
Quando você faz uma chamada de procedimento remoto para o Spanner, as bibliotecas de cliente do Spanner preparam a solicitação da API. Em seguida, a API a solicitação passa pelo front-end da API Spanner e do GFE antes de chegar ao banco de dados do Spanner.
Ao medir e comparar as latências de solicitação entre diferentes componentes e o banco de dados, você pode determinar qual componente está causando o problema. Essas latências incluem a de ida e volta do cliente, a do GFE, a da solicitação da API Spanner e a das consultas.
As seções a seguir explicam cada tipo de latência encontrado nas diagrama.
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 da solicitação da API Spanner que o cliente envia para o banco de dados (pelo GFE e pelo front-end da API Spanner) e o último byte de resposta que o cliente recebe do banco de dados.
A métrica grpc.io/client/roundtrip_latency
informa o tempo entre o primeiro byte da solicitação de API enviada ao
último byte da resposta recebida.
Para capturar e visualizar a latência desse componente, consulte Capturar e visualizar a latência de ida e volta do cliente com o OpenTelemetry ou com o OpenCensus.
Latência da GFE
A latência do Google Front End (GFE) é o período (em milissegundos) entre quando a rede do Google recebe uma chamada de procedimento remoto do cliente e quando o GFE recebe o primeiro byte da resposta. Essa latência não incluem qualquer handshake de TCP/SSL.
Cada resposta do Spanner, seja REST ou gRPC, inclui um cabeçalho que contém o tempo total entre o GFE e o back-end (o serviço Spanner) para a solicitação e a resposta. Isso ajuda a diferenciar melhor a origem da latência entre o cliente e a rede do Google.
A métrica spanner/gfe_latency
captura e expõe a latência do GFE para solicitações do Spanner.
Para capturar e visualizar a latência desse componente, consulte Capturar e visualizar a latência do GFE com o OpenTelemetry ou com o OpenCensus.
Latência da solicitação da API Spanner
A latência da solicitação da API Spanner é o período (em segundos) entre o primeiro byte da solicitação que o front-end da API Spanner e o último byte da resposta que a API Spanner recebe que o front-end envia. A latência inclui o tempo necessário para o processamento das solicitações de API no back-end do Spanner e na camada de API. No entanto, essa latência não inclui sobrecarga de rede ou proxy reverso entre clientes e servidores do Spanner.
A métrica spanner.googleapis.com/api/request_latencies
captura
e expõe a latência do front-end da API Spanner para
solicitações do Spanner.
Para capturar e visualizar a latência desse componente, consulte Capture e visualize a latência das solicitações da API Spanner com o OpenTelemetry ou com o OpenCensus.
Latência da consulta
Latência de consulta é o tempo (em milissegundos) necessário para executar um SQL consultas no banco de dados do Spanner.
A latência da consulta está disponível para a API executeSql.
Se o parâmetro QueryMode
estiver definido como PROFILE
, o ResultSetStats
do Spanner estará disponível nas respostas.
Ao definir QueryMode
como PROFILE
, são retornados o plano de consulta e as estatísticas de execução com os resultados. Além disso,
ResultSetStats
inclui o tempo decorrido para executar consultas no
banco de dados do Spanner.
Para capturar e visualizar a latência desse componente, consulte Capturar e visualizar a latência da consulta com o OpenTelemetry ou com o OpenCensus.
A seguir
- Saiba como identificar pontos de latência nos componentes do Spanner.