Reestilhaçamento, escalabilidade e processamento paralelo - 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á.

Reestilhaçamento, escalabilidade e processamento paralelo

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 a própria KCL não inicie as operações de reestilhaçamento, ela é projetada para se adaptar às alterações no número de estilhaços resultantes do reestilhaçamento.

Conforme observado emUsando uma tabela de leasing para rastrear os fragmentos processados pelo aplicativo do consumidor KCL, a KCL rastreia os estilhaços no stream usando uma tabela do Amazon DynamoDB. Quando novos estilhaços são criados em consequência do reestilhaçamento, a KCL descobre os novos estilhaços e preenche novas linhas na tabela. Os operadores descobrem automaticamente os novos estilhaços e criam processadores para tratar os dados provenientes deles. A KCL também distribui os estilhaços no stream entre todos os operadores e processadores de registros disponíveis.

A KCL garante que os dados existentes nos estilhaços antes do reestilhaçamento sejam processados primeiro. Depois do processamento dos dados, os dados dos novos estilhaços são enviados para processadores de registros. Dessa forma, a KCL preserva a ordem em que os registros de dados foram adicionados ao stream para uma determinada chave de partição.

Exemplo: Reestilhaçamento, escalabilidade e processamento paralelo

O exemplo a seguir ilustra como a KCL ajuda você a lidar com escalabilidade e reestilhaçamento:

  • Por exemplo, se o aplicativo é executado em uma instância do EC2 e processa um stream de dados do Kinesis que tem quatro estilhaços. Esta instância tem um operador da KCL e quatro processadores de registros (um processador de registros para cada estilhaço). 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 operador do KCL é iniciado na segunda instância, ele faz balanceamento de carga com a primeira instância, de modo que cada instância passa a processar dois estilhaços.

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

Normalmente, quando você usa o KCL, deve garantir que o número de instâncias não exceda o número de estilhaços (exceto para fins de espera de falha). Cada estilhaço é processado por exatamente um operador da KCL e tem exatamente um processador de registros correspondente, para que você nunca precise de várias instâncias para processar apenas um estilhaço. 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 Auto Scaling para escalar automaticamente suas 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 o reestilhaçamento aumenta o número de estilhaços no stream, o aumento correspondente no número de processadores de registros aumenta a carga nas instâncias do EC2 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 suas instâncias para iniciar seu aplicativo Amazon Kinesis Data Streams na inicialização, para que os operadores e processadores de registros adicionais fiquem ativos na nova instância imediatamente.

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