Pontos de latência em uma solicitação do Spanner

Esta página fornece uma visão geral dos componentes de alto nível envolvidos em um 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 lidam detalhes de comunicação, 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. A O GFE verifica se todas as conexões Transport Layer Security (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 solicitação de API (incluindo autenticação, autorização e verificações de cota) mantém sessões e estados de transação.

  • O banco de dados do Spanner, que executa leituras e gravações no no seu banco de dados.

Quando você faz uma chamada de procedimento remoto ao Spanner, As bibliotecas de cliente do Spanner preparam a solicitação de 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.

Medindo e comparando as latências de solicitações entre diferentes componentes e o banco de dados, é possível determinar qual componente está causando o problema. Essas latências incluem ida e volta do cliente, GFE e API Spanner. e as latências de consulta e solicitação.

Diagrama da arquitetura do Spanner.

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 primeiro byte da solicitação da API Spanner que o cliente envia para no banco de dados (pelo GFE e pela interface da API Spanner) end) e o último byte de resposta que o cliente recebe do banco de dados.

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

O grpc.io/client/roundtrip_latency métrica fornece 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 do 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.

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

Toda 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 do 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.

O spanner/gfe_latency A métrica 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 front-end envia. A latência inclui o tempo necessário para processar a API solicitações no back-end do Spanner e na camada de API. No entanto, essa latência não inclui sobrecarga de rede ou de proxy reverso entre clientes e servidores do Spanner.

Diagrama de arquitetura do Spanner para latência de solicitação da API Spanner.

A métrica spanner.googleapis.com/api/request_latencies captura e expõe a latência de 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.

Diagrama da arquitetura do Spanner para latência da consulta.

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

Se o QueryMode for definido como PROFILE, o parâmetro ResultSetStats estão disponíveis nas respostas.

Definir QueryMode como PROFILE retorna a consulta e as estatísticas de execução com os resultados. Além disso, ResultSetStats inclui o tempo decorrido para a execução de consultas no 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