Use refragmentação, escalonamento e processamento paralelo para alterar o número de fragmentos - Amazon Kinesis Data Streams

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

Use refragmentação, escalonamento e processamento paralelo para alterar o número de fragmentos

O reestilhaçamento permite aumentar ou diminuir o número de estilhaços em um stream para se adaptar às alterações na taxa de dados que fluem pelo streaming. O reestilhaçamento costuma ser realizado por um aplicativo administrativo que monitora as métricas de tratamento de dados de estilhaço. Embora o KCL próprio não inicie operações de refragmentação, ele foi projetado para se adaptar às mudanças no número de fragmentos resultantes da refragmentação.

Conforme observado emUse uma tabela de leasing para rastrear os fragmentos processados pelo aplicativo consumidor KCL, ele KCL rastreia os fragmentos no stream usando uma tabela do Amazon DynamoDB. Quando novos fragmentos são criados como resultado da refragmentação, ele KCL descobre os novos fragmentos e preenche novas linhas na tabela. Os operadores descobrem automaticamente os novos estilhaços e criam processadores para tratar os dados provenientes deles. Ele KCL também distribui os fragmentos no fluxo entre todos os trabalhadores e processadores de registros disponíveis.

KCLIsso garante que todos os dados que existiam nos fragmentos antes da refragmentação sejam processados primeiro. Depois do processamento dos dados, os dados dos novos estilhaços são enviados para processadores de registros. Dessa forma, KCL preserva a ordem na qual os registros de dados foram adicionados ao fluxo para uma chave de partição específica.

Exemplo: refragmentação, escalabilidade e processamento paralelo

O exemplo a seguir ilustra como isso KCL ajuda você a lidar com o dimensionamento e a refragmentação:

  • Por exemplo, se seu aplicativo estiver sendo executado em uma EC2 instância e estiver processando um stream de dados do Kinesis com quatro fragmentos. Essa instância tem um KCL trabalhador e quatro processadores de registros (um processador de registros para cada fragmento). Esses quatro processadores de registros são executados em paralelo no mesmo processo.

  • Em seguida, se você escalar o aplicativo para usar outra instância, terá duas instâncias processando um único stream que tem quatro estilhaços. Quando o KCL trabalhador é inicializado na segunda instância, ele balanceia a carga com a primeira instância, de forma que cada instância agora processe dois fragmentos.

  • Se você decidir dividir os quatro estilhaços em cinco, O KCL novamente coordena o processamento entre instâncias: uma instância processa três fragmentos e a outra processa dois fragmentos. Uma coordenação semelhante ocorre quando você mescla estilhaços.

Normalmente, ao usar oKCL, você deve garantir que o número de instâncias não exceda o número de fragmentos (exceto para fins de espera de falhas). Cada fragmento é processado por exatamente um KCL trabalhador e tem exatamente um processador de registros correspondente, portanto, você nunca precisará de várias instâncias para processar um fragmento. Mas como um operador pode processar qualquer número de estilhaços, tudo bem se o número de estilhaços ultrapassar o número de instâncias.

Para expandir o processamento do seu aplicativo, você deve testar uma combinação destas abordagens:

  • Aumentar o tamanho da instância (porque todos os processadores de registros são executados em paralelo em um processo)

  • Aumentar o número de instâncias até o número máximo de estilhaços abertos (porque os estilhaços podem ser processados de forma independente)

  • Aumentar o número de estilhaços (o que aumenta o nível de paralelismo)

Observe que você pode usar o ajuste de escala automático para escalar automaticamente as instâncias com base em métricas apropriadas. Para obter mais informações, consulte o Guia do usuário do Amazon EC2 Auto Scaling.

Quando a refragmentação aumenta o número de fragmentos no stream, o aumento correspondente no número de processadores de registro aumenta a carga nas EC2 instâncias que os hospedam. Se as instâncias fazem parte de um grupo de Auto Scaling e a carga aumenta suficientemente, o grupo de Auto Scaling adiciona mais instâncias para lidar com o aumento de carga. Você deve configurar as instâncias para iniciar a aplicação do Amazon Kinesis Data Streams na inicialização, para que os operadores e processadores de registros adicionais se tornem imediatamente ativos na nova instância.

Para obter mais informações sobre a refragmentação, consulte Refragmentar um stream.