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.