Como otimizar a latência da rede

Este documento lista as práticas recomendadas para usar a API Cloud Healthcare. As diretrizes desta página foram projetadas para maior eficiência, precisão e tempos de resposta ideais do serviço.

Como entender o desempenho da latência

O desempenho da API Cloud Healthcare é medido pela latência entre:

  1. Enviar uma solicitação para a API Cloud Healthcare.
  2. Quando você recebe uma resposta completa para a solicitação.

A latência é composta por três componentes:

  • Tempo de retorno (RTT, na sigla em inglês)
  • Latência de processamento do servidor
  • Capacidade do servidor

A distância geográfica entre você e o servidor para o qual você está fazendo solicitações pode ter um impacto significativo no RTT e na capacidade do servidor. A latência e a capacidade distribuídas entre regiões para redes do Google Cloud podem ser encontradas em um painel da transmissão ao vivo. O painel mostra o desempenho que um cliente pode esperar de diferentes locais ao fazer solicitações a servidores da API Cloud Healthcare.

Como medir o desempenho de latência

As ferramentas e os painéis a seguir fornecem maneiras de avaliar o desempenho de solicitações de e para servidores da API Cloud Healthcare:

  • Métricas de latência do Console do Google Cloud: é possível ver a latência do lado do servidor das solicitações da API Cloud Healthcare no Console do Google Cloud. Para mais informações, consulte Métricas do Google Cloud.

  • Métricas personalizadas do Cloud Logging: é possível criar métricas de distribuição usando o Logging. As métricas de distribuição permitem configurar e entender a latência de ponta a ponta nos seus aplicativos. Também é possível monitorar e relatar as medidas de latência personalizadas.

  • Painel de rede do Chrome: é possível inspecionar a atividade de rede no Chrome DevTools para visualizar os detalhes de desempenho de uma solicitação HTTP enviada de um navegador.

Como reduzir a latência da solicitação

Nesta seção, descrevemos vários métodos de redução da latência das solicitações enviadas à API Cloud Healthcare.

Como enviar solicitações para o local regional mais próximo

Para conseguir o melhor desempenho de RTT e capacidade de servidor, envie solicitações do cliente para o local regional mais próximo da API Cloud Healthcare. Consulte uma lista de regiões disponíveis em Regiões.

Como compactar o corpo da resposta

Se um cliente tiver largura de banda limitada, uma maneira fácil e conveniente de reduzir a largura de banda necessária a cada solicitação é ativar a compactação gzip. O gzip é uma forma de compactação de dados, geralmente, ele reduz o tamanho de um arquivo. Assim, o arquivo é transferido mais rapidamente e usa menos espaço de armazenamento do que se não estivesse compactado. A compactação de um arquivo reduz o custo e o tempo de transferência.

Embora a ativação da compactação gzip exija mais tempo de CPU para extrair os resultados, o benefício de economizar largura de banda geralmente faz com que o uso da compactação gzip valha a pena. No entanto, se a largura de banda limitada não for uma preocupação, os benefícios da compactação gzip não valem a pena.

Para receber uma resposta codificada em gzip, é preciso definir um cabeçalho Accept-Encoding na solicitação.

O exemplo a seguir mostra um cabeçalho HTTP formado corretamente para ativar a compactação gzip:

Accept-Encoding: gzip

Como enviar solicitações de aquecimento

Quando um cliente envia solicitações a um servidor da API Cloud Healthcare pela primeira vez durante uma sessão, o cliente executa handshakes TCP com o servidor para estabelecer conexões para solicitações HTTP. Qualquer solicitação subsequente pode continuar usando essas conexões estabelecidas, permitindo que o cliente evite a sobrecarga TCP normalmente associada a uma solicitação. Isso resulta em melhor desempenho ao enviar solicitações.

Como enviar solicitações simultaneamente com HTTP/1.1 ou HTTP/2

Para conseguir o melhor desempenho de uma série de solicitações, envie as solicitações simultaneamente. Use as seguintes diretrizes ao enviar solicitações simultâneas:

  • Ao enviar solicitações simultâneas, tente encontrar um número ideal para o número de solicitações simultâneas. O número ideal depende de vários fatores, incluindo os recursos de hardware e rede e quantas solicitações estão sendo enviadas. Realize testes para encontrar o número ideal.
  • Envie solicitações do cliente usando HTTP/2 sempre que possível. O HTTP/2 oferece melhor desempenho do que o HTTP/1.1, porque ele requer apenas uma conexão TCP ao enviar várias solicitações sequencial ou simultaneamente. Como resultado, você pode evitar a sobrecarga de handshake TCP.
  • Se não for possível usar HTTP/2, use HTTP/1.1 com uma conexão permanente. Evite a sobrecarga de handshake do TCP se as solicitações de aquecimento já tiverem sido enviadas. O uso de uma conexão persistente pode exigir que você gerencie uma conexão otimizada com um pool de conexões para sua biblioteca HTTP.

    Por exemplo, para definir um pool de conexão com 20 solicitações simultâneas usando a biblioteca de cliente HTTP do Google para Java, seu código incluiria o seguinte:

    PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
    // Support 20 concurrent requests.
    cm.setDefaultMaxPerRoute(20);
    cm.setMaxTotal(100);
    HTTP_CLIENT = HttpClients.custom().setConnectionManager(cm).build();
    

    Para definir um pool de conexão com 20 solicitações simultâneas usando o Node.js, seu código incluiria o seguinte:

    require('http').globalAgent.maxSockets = 20