Agendador de tarefas duráveis

O Agendador de Tarefas Duráveis fornece execução durável em Azure. A execução durável é uma abordagem tolerante a falhas para executar código que lida com falhas e interrupções por meio de repetições automáticas e persistência de estado. A execução durável ajuda com cenários como:

  • Transações distribuídas
  • Orquestração de vários agentes
  • Processamento de dados
  • Gerenciamento de infraestrutura

O Agendador de Tarefas Duráveis é o provedor de armazenamento recomendado para Durable Functions e os SDKs de Tarefa Durável.

SKUs com suporte

Para Durable Functions, você pode utilizar o Agendador de Tarefas Duráveis com qualquer SKU do Functions.

Para os SDKs de Tarefa Durável, você pode usar o Agendador de Tarefas Duráveis com qualquer computação.

O agendador em si oferece duas SKUs de cobrança:

Regiões com suporte

O Agendador de Tarefas Duráveis está disponível na maioria das Azure regiões. Execute o seguinte comando para obter a lista atual de regiões disponíveis:

az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table

Considere usar a mesma região para seu aplicativo Durable Functions e os recursos do Agendador de Tarefas Duráveis para otimizar o desempenho e determinadas funcionalidades relacionadas à rede.

Estruturas de orquestração

O Agendador de Tarefas Durável funciona com Funções Duráveis e os SDKs de Tarefas Duráveis. Escolha qual estrutura funciona melhor para seu projeto.

Arquitetura

Para todas as estruturas de orquestração do Agendador de Tarefas Duráveis, você pode criar instâncias de agendador do tipo Microsoft. DurableTask/scheduler usando Azure Resource Manager. Cada recurso do agendador tem internamente seus próprios recursos de computação e memória dedicados otimizados para:

  • Despacho de itens de trabalho de orquestrador, atividade e entidade
  • Armazenando e consultando o histórico em escala com latência mínima
  • Fornecendo uma experiência de monitoramento avançada por meio do painel do Agendador de Tarefas Duráveis

Ao contrário de os provedores de armazenamento BYO, o provedor de Agendador de Tarefas Duráveis é um back-end como serviço criado com finalidade otimizado para as necessidades específicas do Durable Task Framework.

O diagrama a seguir mostra a arquitetura do back-end do Agendador de Tarefas Duráveis e sua interação com aplicativos conectados.

Captura de tela da arquitetura do Agendador de Tarefas Duráveis mostrando o serviço de back-end conectando-se a aplicativos por meio de gRPC.

Separação operacional

O Agendador de Tarefas Duráveis é executado em Azure como um recurso separado do seu aplicativo. Esse isolamento é importante por vários motivos:

  • Redução do consumo de recursos
    Descarregar o gerenciamento de estado para um agendador gerenciado reduz o consumo de CPU e memória em seu aplicativo em comparação com o uso de um provedor de armazenamento BYO.

  • Isolamento de falhas
    Separar o agendador do aplicativo reduz o risco de falhas em cascata e melhora a confiabilidade geral em seus aplicativos conectados.

  • Dimensionamento independente
    O recurso do agendador pode ser dimensionado independentemente do aplicativo para melhor gerenciamento de recursos de infraestrutura e otimização de custos. Por exemplo, vários aplicativos podem compartilhar o mesmo recurso de agendador, que é útil para organizações com várias equipes ou projetos.

  • Experiência de suporte aprimorada
    O Agendador de Tarefas Duráveis é um serviço gerenciado, fornecendo suporte simplificado e diagnóstico para problemas relacionados à infraestrutura subjacente.

Conectividade do aplicativo

Seus aplicativos se conectam ao recurso do agendador por meio de uma conexão gRPC, protegida usando TLS e autenticada pela identidade do aplicativo. O endereço do ponto de extremidade está em um formato semelhante a {scheduler-name}.{region}.durabletask.io. Por exemplo, myscheduler-123.westus2.durabletask.io.

Para cenários que exigem conectividade privada, você pode usar pontos de extremidade privados para rotear o tráfego para o agendador por meio de um link privado em sua rede virtual em vez da Internet pública.

Os itens de trabalho são transmitidos do agendador para o aplicativo usando um modelo de push, melhorando a latência de ponta a ponta e removendo a necessidade de sondagem. Seus aplicativos podem processar vários itens de trabalho em paralelo e enviar respostas de volta ao agendador quando a tarefa de orquestração, atividade ou entidade correspondente for concluída.

Gerenciamento de estado

O Agendador de Tarefas Duráveis gerencia o estado de orquestrações e entidades internamente, sem uma conta de armazenamento separada para gerenciamento de estado. O repositório de estado interno é altamente otimizado para uso com Durable Functions e os SDKs de Tarefa Durável, resultando em melhor durabilidade e confiabilidade e latência reduzida.

O agendador usa uma combinação de armazenamento em memória e interno persistente para gerenciar o estado.

  • O repositório na memória é usado para um estado de curta duração.
  • O repositório persistente é usado para recuperação e para operações de consulta de várias instâncias.

Destaques de funcionalidades

Ao implementar uma das estruturas de orquestração do Agendador de Tarefas Duráveis, você se beneficia de vários destaques importantes.

Painel do Agendador de Tarefas Duráveis

Quando um recurso de agendador é criado, um painel correspondente é fornecido pronto para uso. O painel fornece uma visão geral de todas as orquestrações e instâncias de entidades e permite a você:

  • Filtrar rapidamente por critérios diferentes.
  • Coletar dados sobre uma instância de orquestração, como status, duração, entrada/saída, etc.
  • Analisar uma instância para obter dados sobre sub-orquestrações e atividades.
  • Execute operações de gerenciamento, como pausar, encerrar ou reiniciar uma instância de orquestração.

O acesso ao painel é protegido por controles de acesso baseados em função e identidade.

Para obter mais informações, consulte Depurar e gerenciar orquestrações usando o painel do Agendador de Tarefas Duráveis.

Vários hubs de tarefas

O estado é armazenado de forma durável em um hub de tarefas. Um hub de tarefas:

  • É um contêiner lógico para instâncias de orquestração e entidade.
  • Fornece uma maneira de particionar o repositório de estado.

Com uma instância do agendador, você pode criar vários hubs de tarefas que podem ser usados por aplicativos diferentes. Cada hub de tarefas obtém seu próprio painel de monitoramento. Para acessar um hub de tarefas, a identidade do chamador deve ter as permissões de RBAC (controle de acesso baseado em função) necessárias.

A criação de vários hubs de tarefas isola cargas de trabalho diferentes que podem ser gerenciadas de forma independente. Por exemplo, você pode:

  • Crie um hub de tarefas para cada ambiente (desenvolvimento, teste, prod).
  • Crie hubs de tarefas para equipes diferentes em sua organização.
  • Compartilhe a mesma instância do agendador em vários aplicativos.

O compartilhamento de agendador é uma ótima maneira de otimizar o custo quando várias equipes têm cenários que exigem orquestrações.

Observação

Embora você possa criar vários hubs de tarefas em uma instância de agendador, eles compartilham os mesmos recursos. Se um hub de tarefas estiver muito carregado, ele poderá afetar o desempenho de outros hubs de tarefas no mesmo agendador.

Emulador para desenvolvimento local

O emulador do Agendador de Tarefas Duráveis é uma versão leve do back-end do agendador que é executado localmente em um contêiner do Docker. Com ele, você pode:

  • Desenvolva e teste seu aplicativo sem implantar no Azure.
  • Monitore e gerencie suas orquestrações e entidades como faria em Azure.

Para obter instruções de instalação, consulte Executar o emulador do Agendador de Tarefas Duráveis.

Observação

O emulador armazena internamente a orquestração e o estado da entidade na memória local, portanto, não é adequado para uso em produção.

Políticas de retenção de limpeza automática

É importante eliminar periodicamente os dados de orquestração obsoletos para garantir o uso eficiente do armazenamento. O recurso de autopurga do Agendador de Tarefas Duráveis fornece uma solução simplificada e configurável para administrar a exclusão de instâncias de orquestração automaticamente. Saiba mais sobre como definir políticas de retenção de limpeza automática para o Agendador de Tarefas Duráveis.

Limitações e considerações

  • Cota do agendador:

    Você está limitado em relação à quantidade de agendadores que pode criar, de acordo com o seu SKU de cobrança.

  • Cota do hub de tarefas:

    Você está limitado no número de hubs de tarefas que pode usar, dependendo da sua SKU de cobrança.

    Para obter mais cota, entre em contato com o suporte.

  • Tamanho máximo da carga:

    O Agendador de Tarefas Duráveis tem uma restrição máxima de tamanho de carga para os seguintes tipos de dados serializados por JSON:

    Tipo de dados Tamanho máximo
    Entradas e saídas do orquestrador 1 MB
    Entradas e saídas de atividade 1 MB
    Dados de eventos externos 1 MB
    Status personalizado da orquestração 1 MB
    Status da Entidade 1 MB

    Se seus dados excederem esses limites, consulte Suporte de carga grande para soluções alternativas disponíveis.

  • Comprimento da ID da instância de orquestração:

    As IDs da instância de orquestração são limitadas a um comprimento máximo de 100 caracteres.

    • Caracteres permitidos: somente ASCII imprimível (letras, números, símbolos como -, _, ., etc. Caracteres 0x20 por 0x7E)
    • Comprimento mínimo: 1 caractere (não pode estar vazio)
    • As IDs de instância começando com @ são reservadas para entidades