Evitando a latência ao pesquisar tarefas de atividade - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Evitando a latência ao pesquisar tarefas de atividade

Foi GetActivityTask API projetado para fornecer taskTokenexatamente uma vez. Se um taskToken é descartado ao se comunicar com um operador de atividade, várias solicitações GetActivityTask podem ser bloqueadas por 60 segundos de espera por uma resposta até que GetActivityTask expire.

Se você tem apenas um pequeno número de sondagens aguardando uma resposta, é possível que todas as solicitações sejam colocadas em fila depois da solicitação bloqueada e interrompidas. No entanto, se você tiver um grande número de enquetes pendentes para cada atividade Amazon Resource Name (ARN) e alguma porcentagem de suas solicitações estiver esperando, muitas outras ainda poderão receber uma taskToken e começar a processar o trabalho.

Para sistemas de produção, recomendamos pelo menos 100 enquetes abertas por atividade ARN em cada momento. Se uma sondagem é bloqueada, e uma parte dessas sondagens é colocada em fila depois dela, há várias outras solicitações que receberão um taskToken para processar trabalhos enquanto a solicitação GetActivityTask está bloqueada.

Para evitar esses tipos de problemas de latência ao fazer uma sondagem de tarefas:

  • Implemente seus agentes de sondagem como threads separados do trabalho na sua implementação do operador de atividade.

  • Tenha pelo menos 100 enquetes abertas por atividade em cada ARN momento.

    nota

    Escalar para 100 enquetes abertas por pessoa ARN pode ser caro. Por exemplo, a pesquisa de 100 funções Lambda por sondagem ARN é 100 vezes mais cara do que ter uma única função Lambda com 100 segmentos de pesquisa. Para reduzir a latência e minimizar os custos, use uma linguagem de E/S assíncrona e implemente vários threads de sondagem por operador. Para obter um operador de atividade de exemplo em que os threads do agente de sondagem são separados de threads do trabalho, consulte Exemplo: Activity Worker em Ruby.

Para obter mais informações sobre atividades e operadores de atividade, consulte Saiba mais sobre atividades em Step Functions.