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

Esta página oferece 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 solicitação da API Spanner incluem o seguinte:

Quando você faz uma chamada de procedimento remoto para o Spanner, as bibliotecas de cliente do Spanner preparam a solicitação de API. Em seguida, a solicitação da API passa pelo GFE e pelo AFE do Spanner 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 latências de ponta a ponta do cliente, GFE, solicitação da API Spanner e consulta.

Diagrama de arquitetura do Spanner.

As seções a seguir explicam cada tipo de latência que aparece no diagrama anterior.

Conectividade direta

O tráfego de aplicativos que atende a determinados critérios pode ser encaminhado diretamente ao Spanner, ignorando o Google Front End (GFE) e otimizando a performance. A conectividade direta pode ser ativada para aplicativos que atendem aos seguintes critérios:

  • Execução no Compute Engine ou no Google Kubernetes Engine.
  • Use o endpoint global.
  • Em uma rede configurada com rotas e regras de firewall que permitem que o tráfego de saída chegue a 34.126.0.0/18 e 2001:4860:8040::/42.
  • Usa as versões da biblioteca de cliente:
    • Java: 6.111.0 ou mais recente.
    • Go: 1.88.0 ou mais recente.
  • As credenciais usadas para os aplicativos têm a spanner.databases.get permissão.

Esse recurso pode ser ativado definindo a GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS variável de ambiente como true ou pela configuração da biblioteca de cliente ( setEnableDirectAccess(true) em Java, ClientConfig.EnableDirectAccess em Go ou a propriedade de conexão enableDirectAccess=true no driver JDBC).

Para verificar se a conectividade direta do Spanner está sendo usada, monitore os rótulos de uso nas suas métricas do lado do cliente.

Latência de ponta a ponta

A latência de ponta a ponta é o período (em milissegundos) entre o primeiro byte da solicitação de API Spanner que o cliente envia ao banco de dados (pelo GFE e pelo front-end da API Spanner) e o último byte da resposta que o cliente recebe do banco de dados.

Diagrama de arquitetura do Spanner para latência de ponta a ponta.

A spanner.googleapis.com/client/operation_latencies métrica fornece o tempo entre o primeiro byte da solicitação de API enviada ao último byte da resposta recebida. Isso inclui novas tentativas realizadas pela biblioteca de cliente.

Para mais informações, consulte Visualizar e gerenciar métricas do lado do cliente.

Latência do GFE

A latência do Google Front End (GFE) é o período (em milissegundos) entre o momento em que 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 inclui handshakes de TCP/SSL.

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

Cada resposta do Spanner (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 o GFE.

A spanner.googleapis.com/client/gfe_latencies métrica captura e expõe a latência do GFE para solicitações do Spanner.

Para mais informações, consulte Visualizar e gerenciar métricas do lado do cliente.

Latência de solicitação da API Spanner

A latência de solicitação de API do Spanner é o período (em segundos) entre o momento em que o AFE do Spanner recebe o primeiro byte de uma solicitação e quando o front-end da API Spanner envia o último byte de uma resposta. 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.

Diagrama da 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 do AFE do Spanner para solicitações do Spanner. Para mais informações, consulte Métricas do Spanner.

Latência da consulta

A latência da consulta é o tempo (em milissegundos) necessário para executar consultas SQL no banco de dados do Spanner.

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

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

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

Para capturar e visualizar a latência da consulta, consulte Capturar a latência da consulta com o OpenTelemetry.

A seguir