Escolha do modo de capacidade do fluxo de dados - 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á.

Escolha do modo de capacidade do fluxo de dados

O que é o modo de capacidade do fluxo de dados?

O modo de capacidade determina como a capacidade de um fluxo de dados é gerenciada e como são geradas cobranças pelo seu uso. Atualmente, no Amazon Kinesis Data Streams, você pode escolher entre os modos sob demanda e provisionado para os fluxos de dados.

  • Sob demanda: os fluxos de dados no modo sob demanda não exigem planejamento de capacidade e escalam automaticamente para lidar com gigabytes de throughput de gravação e leitura por minuto. No modo sob demanda, o Kinesis Data Streams gerencia automaticamente os fragmentos para fornecer a throughput necessária.

  • Provisionado: no modo provisionado, você precisa especificar o número de fragmentos para o fluxo de dados. A capacidade total de um fluxo de dados é a soma das capacidades de seus fragmentos. Você pode aumentar ou diminuir o número de fragmentos em um fluxo de dados de acordo com a necessidade.

Você pode usar as APIs PutRecord e PutRecords do Kinesis Data Streams para gravar dados nos fluxos de dados nos modos de capacidade sob demanda e provisionada. Para recuperar dados, os dois modos de capacidade oferecem suporte aos consumidores padrão, que usam a API GetRecords, e aos consumidores de Enhanced Fan-Out (EFO – Distribuição avançada), que usam a API SubscribeToShard.

Todos os recursos do Kinesis Data Streams, incluindo modo de retenção, criptografia, métricas de monitoramento e outros, são compatíveis com os modos sob demanda e provisionado. O Kinesis Data Streams fornece alta durabilidade e disponibilidade nos modos de capacidade sob demanda e provisionada.

Modo sob demanda

Os fluxos de dados no modo sob demanda não exigem planejamento de capacidade e escalam automaticamente para lidar com gigabytes de throughput de gravação e leitura por minuto. O modo sob demanda simplifica a ingestão e o armazenamento de grandes volumes de dados com baixa latência, pois elimina o provisionamento e o gerenciamento de servidores, armazenamento ou throughput. Você pode ingerir bilhões de registros por dia sem nenhuma sobrecarga operacional.

O modo sob demanda é ideal para atender às necessidades de tráfego de aplicações altamente variável e imprevisível. Você não precisa mais provisionar essas cargas de trabalho na capacidade máxima, o que pode resultar em custos mais altos devido à baixa utilização. O modo sob demanda é adequado para cargas de trabalho com padrões de tráfego imprevisíveis e altamente variáveis.

Com o modo de capacidade sob demanda, você paga por GB de dados gravados e lidos em seus fluxos de dados. Você não precisa especificar o throughput de leitura e gravação que espera que a aplicação execute. O Kinesis Data Streams ajusta-se instantaneamente ao crescimento e à redução das workloads. Para ter mais informações, consulte Definição de preço do Amazon Kinesis Data Streams.

Você pode criar um novo fluxo de dados no modo sob demanda usando o console do Kinesis Data Streams, APIs ou a CLI.

Um fluxo de dados no modo sob demanda acomoda até o dobro do pico de throughput de gravação observado nos 30 dias anteriores. Quando a throughput de gravação do fluxo de dados atinge um novo pico, o Kinesis Data Streams escala automaticamente a capacidade do fluxo de dados. Por exemplo, se a throughput de gravação do fluxo de dados variar entre 10 MB/s e 40 MB/s, o Kinesis Data Streams garantirá que seja possível expandir facilmente até o dobro da throughput máxima anterior, ou seja, 80 MB/s. Se o mesmo fluxo de dados tiver um novo pico de throughput de 50 MB/s, o Kinesis Data Streams garantirá capacidade suficiente para ingerir 100 MB/s de throughput de gravação. No entanto, poderá ocorrer controle de utilização se o tráfego aumentar para mais que o dobro do pico anterior em um período de 15 minutos. Você precisa repetir as solicitações em controle de utilização.

A capacidade de leitura de agregados de um fluxo de dados no modo sob demanda aumenta proporcionalmente com a throughput de gravação. Isso ajuda a garantir que as aplicações de consumo sempre tenham uma throughput de leitura adequada para processar os dados recebidos em tempo real. Você obtém pelo menos o dobro da throughput de gravação em comparação com os dados de leitura usando a API GetRecords. Recomendamos que você use uma aplicação de consumo com a API GetRecord, para permitir espaço suficiente quando a aplicação precisar se recuperar de tempo de inatividade. É recomendável usar o recurso de distribuição avançada do Kinesis Data Streams em cenários que exijam a adição de mais de uma aplicação de consumo. A distribuição avançada permite adicionar até 20 aplicações de consumo a um fluxo de dados usando a API SubscribeToShard, com uma throughput dedicada para cada aplicação.

Tratar exceções de throughput de leitura e gravação

Com o modo de capacidade sob demanda (da mesma forma que com a capacidade provisionada), você precisa especificar uma chave de partição com cada registro para gravar dados no fluxo. O Kinesis Data Streams usa suas chaves de partição para distribuir dados entre fragmentos. O Kinesis Data Streams monitora o tráfego de cada fragmento. Quando o tráfego de entrada excede 500 KB/s por fragmento, o serviço divide o fragmento em 15 minutos. Os valores da chave de hash do fragmento pai são redistribuídos uniformemente entre os fragmentos filho.

Se o tráfego de entrada exceder o dobro do pico anterior, poderão ocorrer exceções de leitura ou gravação por cerca de 15 minutos, mesmo quando os dados forem distribuídos uniformemente entre os fragmentos. Recomendamos que você repita todas essas solicitações para que todos os registros sejam armazenados adequadamente no Kinesis Data Streams.

As exceções de leitura e gravação podem ocorrer quando você usa uma chave de partição que causa uma distribuição desigual de dados, e os registros atribuídos a um fragmento específico excedem seus limites. Com o modo sob demanda, o fluxo de dados se adaptará automaticamente para lidar com padrões desiguais de distribuição de dados, a menos que uma única chave de partição exceda os limites de throughput de 1 MB/s e 1.000 registros por segundo por fragmento.

No modo sob demanda, o Kinesis Data Streams divide os fragmentos uniformemente quando detecta um aumento no tráfego. No entanto, ele não detecta nem isola as chaves de hash que estão direcionando uma parte maior do tráfego de entrada para um fragmento específico. Se você estiver usando chaves de partição altamente desiguais, as exceções de gravação poderão continuar ocorrendo. Para esses casos de uso, é recomendável usar o modo de capacidade provisionada que oferece suporte a divisões granulares de fragmentos.

Modo provisionado

Com o modo provisionado, depois de criar o fluxo de dados, você pode aumentar ou reduzir dinamicamente sua capacidade de fragmentos usando a ou a AWS Management Console API. UpdateShardCount Você pode fazer atualizações enquanto uma aplicação de produção ou de consumo do Kinesis Data Streams grava ou lê dados do fluxo.

O modo provisionado é adequado para tráfego com requisitos de capacidade fáceis de prever. Você pode usar o modo provisionado quando quiser ter um controle refinado da distribuição dos entre os fragmentos.

No modo provisionado, você precisa especificar o número de fragmentos para o fluxo de dados. Para determinar o tamanho inicial de um fluxo de dados, você precisa dos seguintes valores de entrada:

  • O tamanho médio do registro de dados gravado no fluxo em kilobytes (KB), arredondado para o 1 KB mais próximo (average_data_size_in_KB).

  • O número de registros de dados gravados e lidos no stream por segundo (records_per_second).

  • O número de consumidores, que são as aplicações do Kinesis Data Streams que consomem dados de forma simultânea e independente do fluxo (number_of_consumers).

  • A largura de banda de gravação de entrada em KB (incoming_write_bandwidth_in_KB), que é igual a average_data_size_in_KB multiplicado por records_per_second.

  • A largura de banda de leitura de saída em KB (outgoing_read_bandwidth_in_KB), que é igual a incoming_write_bandwidth_in_KB multiplicado por number_of_consumers.

Você pode calcular o número dos fragmentos (number_of_shards) necessários para o fluxo usando os valores de entrada na seguinte fórmula:

number_of_shards = max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048)

Ainda será possível ocorrer exceções de throughput de leitura e gravação no modo provisionado se você não configurar o fluxo de dados para lidar com a throughput máxima. Nesse caso, será preciso escalar manualmente o fluxo para acomodar o tráfego de dados.

As exceções de leitura e gravação também podem ocorrer quando você usa uma chave de partição que causa uma distribuição desigual de dados, e os registros atribuídos a um fragmento excedem seus limites. Para resolver esse problema no modo provisionado, identifique esses fragmentos e divida-os manualmente para acomodar melhor o tráfego. Para obter mais informações, consulte Resharding a Stream.

Alternar entre os modos de capacidade

Você pode alternar o modo de capacidade do fluxo de dados de sob demanda para provisionado ou vice-versa. Para cada fluxo de dados na conta da AWS, você pode alternar entre os modos de capacidade sob demanda e provisionada duas vezes a cada 24 horas.

Alternar entre os modos de capacidade de um fluxo de dados não causa nenhuma interrupção nas aplicações usando o fluxo. Você pode continuar gravando e lendo o fluxo de dados. Durante a operação de mudar o modo de capacidade, de sob demanda para provisionado ou vice-versa, o status do fluxo é definido como Atualizando. Você precisa esperar que o status do fluxo de dados passe a Ativo antes de tentar modificar suas propriedades novamente.

Quando você muda do modo de capacidade provisionada para o modo de capacidade sob demanda, o fluxo de dados retém inicialmente a quantidade de fragmentos que tinha antes da transição. A partir desse momento, o Kinesis Data Streams monitora o tráfego de dados e escala a contagem de fragmentos do fluxo de dados sob demanda de acordo com a throughput de gravação.

Quando você muda do modo de capacidade sob demanda para o modo de capacidade provisionada, o fluxo de dados também retém inicialmente a quantidade de fragmentos que tinha antes da transição. Mas, a partir desse momento, você é responsável por monitorar e ajustar a contagem de fragmentos do fluxo de dados para acomodar a throughput de gravação da forma apropriada.