Conceitos básicos do AWS Flow Framework: aplicativos escaláveis - AWS Flow Framework para Java

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á.

Conceitos básicos do AWS Flow Framework: aplicativos escaláveis

O Amazon SWF tem dois recursos principais que facilitam o dimensionamento de um aplicativo de fluxo de trabalho para lidar com a carga atual:

  • Um histórico completo de execução do fluxo de trabalho, que permite implementar um aplicativo stateless.

  • Agendamento de tarefas que livremente acoplado à execução da tarefa, o que facilita escalar o aplicativo para atender às demandas atuais.

O Amazon SWF agenda as tarefas postando-as em listas de tarefas alocadas dinamicamente, e não se comunicando diretamente com os trabalhadores do fluxo de trabalho e das atividades. Em vez disso, os operadores utilizam solicitações HTTP para consultar suas respectivas listas em busca das tarefas. Essa abordagem associa livremente o agendamento de tarefas à execução de tarefas e permite que os trabalhadores sejam executados em qualquer sistema adequado, incluindo instâncias do Amazon EC2, data centers corporativos, computadores de clientes e assim por diante. Como as solicitações HTTP são originadas com os operadores, não há necessidade de portas externamente visíveis, o que permite que os operadores sejam executados até mesmo atrás de um firewall.

O mecanismo de consulta prolongada utilizado pelos operadores para consultar tarefas garante que eles não se sobrecarreguem. Mesmo que ocorra um pico de tarefas agendadas, os operadores puxam as tarefas em seus próprios ritmos. No entanto, como os operadores são stateless, é possível escalar dinamicamente um aplicativo para atender à carga aumentada iniciando instâncias de operador adicionais. Mesmo que sejam executadas em sistemas diferentes, cada instância consulta a mesma lista de tarefas e a primeira instância de operador disponível executa cada tarefa, independentemente de onde o operador está localizado ou de quando ele foi iniciado. Quando a carga diminuir, você pode reduzir o número de operadores em conformidade.