Evitar latência ao fazer uma sondagem de 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á.

Evitar latência ao fazer uma sondagem de tarefas de atividade

A API GetActivityTask foi criada para fornecer um taskToken exatamente 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 sondagens pendentes para cada nome do recurso da Amazon (ARN) de atividade e uma porcentagem de suas solicitações estiver paralisada em espera, haverá várias outras que ainda poderão obter um taskToken e começar a processar os trabalhos.

Para sistemas de produção, recomendamos pelo menos 100 sondagens abertas por ARN de atividade em cada momento específico. 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 sondagens abertas por ARN de atividade em cada momento específico.

    nota

    Dimensionar para 100 sondagens abertas por ARN pode ser caro. Por exemplo, 100 sondagens de funções do Lambda por ARN custam 100 vezes mais caro que ter uma única função do Lambda com 100 threads de sondagem. 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 de operador de atividade em Ruby.

Para obter mais informações sobre atividades e operadores de atividade, consulte Atividades.