Nesta página, você verá o que são as tarefas e filas do Cloud Tasks, além de quando e como usá-las. O Cloud Tasks permite separar os trabalhos que podem ser executados de maneira independente, fora do fluxo principal do aplicativo e enviá-los para processamento assíncrono, usando os gerenciadores criados por você. Esses trabalhos independentes são chamados de tarefas. Por exemplo, você precisa atualizar um banco de dados como parte do processamento de uma solicitação do usuário, mas as atualizações podem ser demoradas. O descarregamento desse detalhe como uma tarefa permite que você retorne da solicitação mais rapidamente.
A tarefa transferida é adicionada a uma fila, que a mantém até que seja executada. Com base na configuração inicial, a fila também pode funcionar como um controle de fluxo de despacho. Você cria e configura a fila, que é gerenciada pelo serviço Cloud Tasks. Depois que as tarefas são adicionadas, a fila as despacha e garante que elas sejam processadas de forma confiável pelos workers. As complexidades associadas a esse processo, como custos de latência do usuário, falhas do servidor, limitações de consumo de recursos e gerenciamento de novas tentativas, são gerenciadas pelo serviço.
O Cloud Tasks foi projetado para fornecer a entrega "pelo menos uma vez". Ou seja, se uma tarefa for adicionada com sucesso, a fila a entregará pelo menos uma vez. Em algumas circunstâncias raras, a execução de várias tarefas é possível. Dessa maneira, o código precisa garantir que não haja efeitos colaterais prejudiciais pela execução repetida. Seus gerenciadores precisam ser idempotentes.
As próprias tarefas são constituídas por um nome exclusivo e informações de configuração. Opcionalmente, também contêm dados da solicitação inicial, chamados payload, que são necessários para processar a solicitação. Como o payload é enviado no corpo da solicitação, as tarefas que o incluem precisam usar POST ou PUT como método HTTP.
Para acessar o serviço Cloud Tasks usando a API Cloud Tasks , é necessário ter um Google Cloud projeto.
Recursos
Com o Cloud Tasks, é possível despachar itens de trabalho assíncronos com os seguintes controles:
- Agendar horários de entrega específicos
- Gerenciar taxas de envio
- Configurar o comportamento de repetição
- Acessar e gerenciar tarefas individuais em uma fila
- Ativar a eliminação de duplicação de tarefas
Fluxo de trabalho geral
O fluxo de trabalho geral é o seguinte:
- Você cria um worker para processar as tarefas.
- Você cria uma fila.
- Você cria tarefas de maneira programática e as adiciona à fila.
- O serviço Cloud Tasks retorna um OK para o aplicativo de origem. Isso indica que a tarefa foi gravada com êxito no armazenamento do Cloud Task, o que torna a solicitação de criação de tarefa altamente disponível e durável.
- As tarefas são transmitidas para o worker.
- O worker processa a tarefa.
- Para completar a sequência, o worker retorna um código de status de sucesso 2xx para o serviço Cloud Tasks.
Depois que a tarefa for entregue à fila, nenhum dado estará disponível para a solicitação inicial.
Casos de uso
Os casos de uso típicos incluem:
- acelerar os tempos de resposta dos usuários delegando operações em segundo plano potencialmente lentas, como atualizações de banco de dados para um worker;
- preservar solicitações no contexto de incidentes de produção inesperados;
- ajudar a amenizar os picos de tráfego removendo tarefas que não são voltadas para o usuário do fluxo de usuários principal.
- Como gerenciar 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 a solicitação de tarefa ao worker, localizado em qualquer endpoint HTTP genérico, com base em como a tarefa é configurada. Esse endpoint pode estar em funções do Cloud Run, Cloud Run, GKE, Compute Engine ou até mesmo em um servidor da Web local, com base na configuração da tarefa. Essas filas enviam solicitações a uma taxa confiável e configurável. Elas garantem uma execução de tarefas confiável. Depois de concluídas, todos os workers precisam enviar um código de resposta HTTP (200-299) para o serviço Cloud Tasks antes do prazo padrão de 10 minutos, com um máximo de 30 minutos. Se nenhuma resposta ou uma resposta diferente for enviada, uma nova tentativa com a tarefa será realizada.
O destino precisa gerenciar o escalonamento de workers e a limpeza de tarefas quando elas forem concluídas.
Se o destino exigir autenticação, será necessário configurar duas contas de serviço, uma para o aplicativo, o cliente, e outra para a própria fila. As duas contas precisam ter recebido as permissões exigidas. Além disso, é necessário que um identificador para a conta de serviço do cliente seja incluído na solicitação de tarefa. Consulte Criar 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:
- Ambientes de execução de segunda geração do ambiente padrão do App Engine
- Ambiente flexível do App Engine
Os usuários de ambientes de execução de primeira geração do App Engine que usam a API Fila de tarefas podem migrar para o Cloud Tasks. Para saber como, consulte Migrar de serviços agrupados legados. Os usuários de ambientes de execução de primeira geração do App Engine que não usam o serviço de tarefas incluídos podem fazer upgrade para ambientes de execução de segunda geração para usar o Cloud Tasks.
No caso de destinos do App Engine, o serviço Cloud Tasks também encaminha a solicitação de tarefa para o gerenciador, mas esse worker está localizado no App Engine. Portanto, todas as filas que segmentam os gerenciadores do App Engine precisam ter um app do App Engine. Os gerenciadores precisam ser executados na região em que o app do App Engine é executado. Essa região também serve como o parâmetro LOCATION_ID para suas solicitações do Cloud Tasks.
As tarefas são roteadas com base em como a tarefa (ou, menos comumente, a própria fila) está configurada. As filas enviam solicitações a uma taxa confiável e configurável. Elas garantem a execução confiável das tarefas. Depois de concluídas, todos os workers precisam enviar um código de resposta HTTP (200-299) para o serviço Cloud Tasks, nesta instância, antes de um prazo baseado no tipo de dimensionamento de instância do serviço: 10 minutos para escalonamento automático ou até 24 horas para escalonamento manual. Se nenhuma resposta ou uma resposta diferente for enviada, uma nova tentativa com a tarefa será realizada.
Como os gerenciadores fazem parte do App Engine, o próprio serviço Cloud Tasks pode fazer muito do gerenciamento de processos para a tarefa, escalonando os workers acima e abaixo do tráfego e excluindo tarefas quando elas são concluídas.
Regiões com suporte por segmentação
Se o destino for um endpoint HTTP/S, o Cloud Tasks estará disponível em todas as regiões Google Cloud com suporte para o Cloud Tasks.
Se o destino for um aplicativo do App Engine localizado no seu projeto atual:
Uma tarefa destinada ao App Engine só pode ser criada na região do App Engine do projeto.
Um projeto do Google Cloud pode conter apenas um aplicativo do App Engine, e a região em que o aplicativo está localizado não pode ser alterada depois que o aplicativo é criado.
O App Engine é regional, o que significa que a infraestrutura que executa seu app está localizada em uma região específica. Se você quiser distribuir computação e filas em várias regiões, segmente um endpoint HTTP/S.
Se você não estiver usando o App Engine como destino, não será necessário implantar um app do App Engine e poderá desativar qualquer app do App Engine existente.
Termos-chave
Os termos a seguir descrevem os principais recursos do Cloud Tasks.
Termo | Definição |
---|---|
fila | Um conjunto de tarefas com o mesmo tipo de destino gerenciado por uma única configuração. |
tipo de destino | Como e o local em que uma tarefa é processada. |
worker | Um serviço que processa tarefas. |
tentativa | Uma tentativa de executar uma tarefa. |
tentativa de despacho | O momento em que o Cloud Tasks enviou a tarefa ao seu destino. |
tentativa de resposta | Uma resposta de um worker que indica que o trabalho associado à tarefa foi concluído com sucesso ou falhou. |
tentar de novo | Várias tentativas para executar uma tarefa. O número de novas tentativas é definido usando parâmetros de nova tentativa. |
limites de taxas | Os limites de taxas para uma fila. |
Observabilidade
É possível monitorar e analisar a atividade e o crescimento da Cloud Tasks usando as ferramentas de monitoramento, geração de registros e diagnóstico fornecidas pela Observabilidade do Google Cloud. Para mais informações, consulte Observabilidade no Cloud Tasks.