Simultaneidade

O Cloud Functions (2nd gen) é compatível com o processamento de várias solicitações simultâneas em uma única instância de função. Isso pode ser útil para evitar inicializações a frio, já que uma instância já aquecida pode processar várias solicitações simultaneamente, reduzindo assim a latência geral.

Quando a simultaneidade está ativada, o Cloud Functions (2nd gen) não fornece isolamento entre solicitações simultâneas processadas pela mesma instância da função. Nesses casos, é necessário garantir que o código da função seja seguro para execução simultânea. Observe as seguintes considerações sobre determinados ambientes de execução da linguagem:

  • O Node.js é inerentemente uma única linha de execução. Para aproveitar a simultaneidade, use o estilo de código assíncrono do JavaScript, que é idiomático no Node.js. Consulte Controle de fluxo assíncrono na documentação oficial do Node.js para mais detalhes.

  • Recomendamos começar com uma simultaneidade menor, como 8, e depois movê-la. Começar com uma simultaneidade muito alta pode levar a um comportamento intencional devido a restrições de recursos, como memória ou CPU.

Por padrão, as instâncias de função gerenciam apenas uma solicitação por vez. É possível mudar esse comportamento por função definindo um valor de simultaneidade, conforme mostrado na próxima seção.

Definir um valor de simultaneidade

O valor de simultaneidade padrão é 1. É possível definir o valor de simultaneidade de uma função para substituir o valor padrão. O valor de simultaneidade representa o número máximo de solicitações simultâneas que uma única instância da função pode processar.

Um valor de simultaneidade maior que 1 faz com que seu código de função seja executado simultaneamente em uma única instância. O valor máximo de simultaneidade é 1.000, embora recomendamos começar com um valor menor e continuar aumentando. Definir um valor de simultaneidade maior que 1 exige que uma função tenha uma ou mais vCPUs. Consulte Limites de memória para os valores padrão de memória e vCPU.

É possível definir a simultaneidade para uma função de uma das seguintes maneiras:

Definir a simultaneidade usando o Cloud Functions

gcloud

É possível definir um valor de simultaneidade usando a CLI gcloud implantando uma função de segunda geração com o flag --concurrency:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

Em que CONCURRENCY_VALUE é o número máximo de solicitações simultâneas permitidas por instância do contêiner. Deixe a simultaneidade não especificada para receber o valor padrão do servidor.

Console

Para definir um valor de simultaneidade usando o console do Google Cloud, faça o seguinte:

  1. Acesse a página de visão geral do Cloud Functions no console do Google Cloud.
  2. Clique no nome da função para acessar a página Detalhes da função.
  3. Clique em Editar.
  4. Expanda a seção Ambiente de execução, build... no final da página e clique na guia Ambiente de execução.
  5. Em Simultaneidade, insira um valor de simultaneidade no campo chamado Máximo de solicitações simultâneas por instância.
  6. Clique em Próxima.
  7. Clique em Implantar.

    Essa é uma etapa necessária para que as alterações entrem em vigor.

Definir a simultaneidade usando o Cloud Run

gcloud

Para definir um valor de simultaneidade usando a CLI gcloud, atualize o serviço subjacente do Cloud Run e especifique a sinalização --concurrency:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

Em que CONCURRENCY_VALUE é o número máximo de solicitações simultâneas permitidas por instância do contêiner. Deixe a simultaneidade não especificada para receber o valor padrão do servidor.

Console

Para definir um valor de simultaneidade usando o console do Google Cloud, faça o seguinte:

  1. Acesse a página de visão geral do Cloud Functions no console do Google Cloud.
  2. Clique no nome da função para acessar a página Detalhes da função.
  3. No painel Com tecnologia do Cloud Run, clique no nome da sua função para acessar a página Detalhes do serviço do serviço do Cloud Run.
  4. Clique em Editar e implantar uma nova revisão na parte superior da página.
  5. Abra a guia Contêiner.
  6. Insira um valor de simultaneidade no campo Máximo de solicitações simultâneas por instância.

    Se o valor fornecido para Máximo de solicitações simultâneas por instância for maior que 1, role a página para baixo e abra a seção Contêineres. Verifique se o campo CPU contém um valor de 1 ou mais.

  7. Clique em Implantar.

    Essa é uma etapa necessária para que as alterações entrem em vigor.

O Cloud Functions 2ª geração tem como base o suporte de simultaneidade fornecido pelo Cloud Run. Para saber mais, consulte Máximo de solicitações simultâneas por instância (serviços) na documentação do Cloud Run.