Compreenda o Cloud Tasks

Esta página descreve o que são as tarefas e as filas do Cloud Tasks, e quando e como as usar. O Cloud Tasks permite-lhe separar partes do trabalho que podem ser realizadas independentemente, fora do fluxo principal da sua aplicação, e enviá-las para processamento assíncrono através de processadores que cria. Estas partes independentes do trabalho são denominadas tarefas. Por exemplo, tem de atualizar uma base de dados como parte do processamento de um pedido do utilizador, mas as atualizações podem demorar muito tempo. A transferência desse detalhe como uma tarefa permite-lhe regressar do pedido mais rapidamente.

A tarefa transferida é adicionada a uma fila, que mantém a tarefa até ser executada com êxito ou o número de tentativas se esgotar, após o que é eliminada. Com base na configuração inicial, a fila também pode funcionar como um controlo do fluxo de envio. Cria e configura a fila que é, em seguida, gerida pelo serviço Cloud Tasks. Depois de adicionadas, as tarefas são enviadas pela fila e processadas de forma fiável pelos seus trabalhadores. As complexidades associadas a esse processo, como os custos de latência visíveis para o utilizador, as falhas do servidor, as limitações de consumo de recursos e a gestão de novas tentativas, são processadas pelo serviço.

O Cloud Tasks foi concebido para oferecer uma entrega "pelo menos uma vez". Ou seja, se uma tarefa for adicionada com êxito, a fila entrega-a, pelo menos, uma vez. Em algumas circunstâncias raras, é possível executar várias tarefas, pelo que o seu código tem de garantir que não existem efeitos secundários prejudiciais da execução repetida. Os seus processadores devem ser idempotentes.

As tarefas são compostas por um nome exclusivo e informações de configuração, bem como, opcionalmente, quaisquer dados do pedido inicial, denominados payload, necessários para processar o pedido. Uma vez que a carga útil é enviada no corpo do pedido, as tarefas que incluem cargas úteis têm de usar POST ou PUT como método HTTP.

Para aceder ao serviço Cloud Tasks através da API Cloud Tasks , tem de ter um Google Cloud projeto.

Funcionalidades

Com o Cloud Tasks, pode enviar itens de trabalho assíncronos com os seguintes controlos:

  • Agende horas de entrega específicas
  • Faça a gestão das taxas de fornecimento
  • Configure o comportamento de repetição
  • Aceda e faça a gestão de tarefas individuais numa fila
  • Ative a desduplicação de tarefas

Fluxo de trabalho geral

O fluxo de trabalho geral é o seguinte:

  1. Cria um trabalhador para processar as tarefas.
  2. Cria uma fila.
  3. Cria tarefas de forma programática e adiciona-as à fila.
  4. O serviço Cloud Tasks devolve um OK à aplicação de origem. Isto indica que a tarefa foi escrita com êxito no armazenamento do Cloud Tasks, o que torna o pedido de criação de tarefas altamente disponível e duradouro.
  5. As tarefas são transmitidas ao trabalhador.
  6. O trabalhador processa a tarefa.
  7. Para concluir a sequência, o trabalhador devolve um código de estado de êxito 2xx ao serviço Cloud Tasks.

Assim que a tarefa é entregue à fila, não são disponibilizados dados ao pedido inicial.

Exemplos de utilização

Seguem-se alguns exemplos de utilização típicos:

  • Acelerar os tempos de resposta dos utilizadores delegando operações em segundo plano potencialmente lentas, como atualizações da base de dados, a um trabalhador
  • Preservar pedidos no contexto de incidentes de produção inesperados
  • Ajudar a suavizar os picos de tráfego removendo tarefas não visíveis para o utilizador do fluxo de utilizador principal
  • Gerir taxas de chamadas de API de terceiros

Filas do Cloud Tasks com destinos HTTP

No caso de destinos HTTP genéricos, o serviço Cloud Tasks encaminha o pedido de tarefa para o trabalhador, localizado em qualquer ponto final HTTP genérico, com base na forma como a tarefa está configurada. Este ponto final pode estar em funções do Cloud Run, Cloud Run, GKE, Compute Engine ou até mesmo num servidor Web nas instalações, com base na configuração da tarefa. Estas filas enviam pedidos a uma taxa fiável e configurável. Garantem a execução fiável de tarefas. Após o êxito, todos os trabalhadores têm de enviar um código de resposta HTTP (200 a 299) ao serviço Cloud Tasks antes do prazo de tempo limite predefinido de 10 minutos, com um máximo de 30 minutos. Se for enviada uma resposta diferente ou nenhuma resposta, a tarefa é repetida.

Filas baseadas em HTTP

O destino tem de gerir o dimensionamento dos trabalhadores e limpar as tarefas assim que estiverem concluídas.

Se o seu destino exigir autenticação, tem de configurar duas contas de serviço: uma para a sua aplicação, o cliente, e outra para a própria fila. Ambas as contas têm de ter recebido as autorizações necessárias, e tem de ser incluído um identificador para a conta de serviço do cliente no pedido da tarefa. Consulte o artigo Crie tarefas de destino HTTP para mais informações.

Filas do Cloud Tasks com destinos do App Engine

O Cloud Tasks é compatível com os seguintes ambientes do App Engine:

  • Tempos de execução de segunda geração do ambiente padrão do App Engine
  • Ambiente flexível do App Engine

Os utilizadores dos runtimes de primeira geração do App Engine que usam a API Task Queue podem migrar para o Cloud Tasks. Para saber como, consulte o artigo Migre os serviços incluídos antigos. Os utilizadores dos runtimes de primeira geração do App Engine que não usam o serviço de tarefas incluído podem atualizar para runtimes de segunda geração para usar o Cloud Tasks.

No caso dos destinos do App Engine, o serviço Cloud Tasks também encaminha o pedido de tarefa para o controlador, mas este trabalhador está localizado no App Engine. Assim, todas as filas que segmentam controladores do App Engine têm de ter uma app do App Engine. Os controladores têm de ser executados na região onde a app do App Engine é executada. Esta região também serve como parâmetro LOCATION_ID para os seus pedidos do Cloud Tasks.

As tarefas são encaminhadas com base na forma como a tarefa (ou, menos frequentemente, a própria fila) está configurada. As filas enviam pedidos a uma taxa fiável e configurável. Garantem a execução fiável de tarefas. Após o êxito, todos os trabalhadores têm de enviar um código de resposta HTTP (200 a 299) ao serviço Cloud Tasks, neste caso, antes de um prazo com base no tipo de dimensionamento de instâncias do serviço: 10 minutos para o dimensionamento automático ou até 24 horas para o dimensionamento manual. Se for enviada uma resposta diferente ou nenhuma resposta, a tarefa é repetida.

Filas baseadas no App Engine

Uma vez que os controladores fazem parte do App Engine, o próprio serviço Cloud Tasks pode fazer grande parte da gestão de processos da tarefa, dimensionando os trabalhadores para cima e para baixo em relação ao tráfego e eliminando tarefas quando são concluídas.

Regiões suportadas por destino

Se o destino for um ponto final HTTP/S, o Cloud Tasks está disponível em todas as regiões suportadas Google Cloud para o Cloud Tasks.

Se o destino for uma aplicação do App Engine localizada no seu projeto atual:

  • Uma segmentação de tarefas do App Engine só pode ser criada na região do App Engine do projeto.

  • Um Google Cloud projeto só pode conter uma app do App Engine e a região onde a app do App Engine está localizada não pode ser alterada depois de a app ser criada.

  • O App Engine é regional, o que significa que a infraestrutura que executa a sua app está localizada numa região específica. Se quiser distribuir recursos de computação e filas por várias regiões, deve segmentar um ponto final HTTP/S.

  • Se não estiver a usar o App Engine como destino, não precisa de implementar uma app do App Engine e pode desativar qualquer app do App Engine existente.

Remoção de duplicados de tarefas

A eliminação de duplicações de tarefas é alcançada através da atribuição de um nome único a uma tarefa. Se tentar criar uma tarefa com um nome que já exista na fila, o pedido de criação falha. Isto evita que a mesma tarefa seja adicionada mais do que uma vez.

O Cloud Tasks memoriza os nomes das tarefas até 24 horas após a eliminação da tarefa da fila. A tentativa de recriar uma tarefa com o mesmo nome durante este período também resulta num pedido falhado.

Se não indicar um nome quando cria uma tarefa, o Cloud Tasks gera um nome exclusivo para a mesma, e a eliminação de duplicados é desnecessária.

Palavras-chave

Os termos seguintes descrevem as principais capacidades do Cloud Tasks.

Vigência Definição
fila Um conjunto de tarefas com o mesmo tipo de destino gerido por uma única configuração.
tipo de segmentação Onde e como uma tarefa é processada.
trabalhadora Um serviço que processa tarefas.
tentativa Uma tentativa de executar uma tarefa.
tentativa de envio O momento em que o Cloud Tasks enviou a tarefa para o respetivo destino.
tentativa de resposta Uma resposta de um trabalhador que indica que o trabalho associado à tarefa foi concluído com êxito ou falhou.
tentar novamente Várias tentativas de executar uma tarefa. O número de novas tentativas é definido através de parâmetros de novas tentativas.
limites de velocidade Os limites de taxa para uma fila.

Observabilidade

Pode monitorizar e analisar a atividade e o crescimento do Cloud Tasks através das ferramentas de monitorização, registo e diagnóstico fornecidas pela Google Cloud Observability. Para mais informações, consulte o artigo Observabilidade no Cloud Tasks.