Escolha o modo certo para transmitir - Amazon Kinesis Data Streams

Escolha o modo certo para transmitir

Os tópicos a seguir explicam como escolher o melhor modo de capacidade para sua aplicação e como alternar entre os modos, se necessário.

Quais são os diferentes modos no Kinesis Data Streams?

Um modo determina como a capacidade de um fluxo de dados é gerenciada e como são geradas cobranças pelo uso do fluxo de dados. No Amazon Kinesis Data Streams, você pode escolher On-demand Standard, On-demand Advantage e provisionado como modo para os fluxos de dados.

  • On-demand Standard: 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.

  • On-demand Advantage: um modo de conta que permite mais recursos e fornece uma estrutura de preços mais simples para fluxos sob demanda. Nesse modo, você pode aquecer proativamente a capacidade de throughput de gravação de um stream a qualquer momento. Em termos de preços, não há mais uma cobrança fixa por fluxo, e a ingestão de dados, a recuperação de dados e o uso de retenção estendida em todos os fluxos sob demanda são pelo menos 60% menores do que os do On-demand Standard.

  • Provisionado: para fluxos de dados com um modo provisionado, é necessário 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. É possível aumentar ou diminuir o número de fragmentos em um fluxo de dados de acordo com a necessidade.

Pode-se usar as APIs PutRecord e PutRecords do Kinesis Data Streams para gravar dados nos fluxos de dados em qualquer modo. Para recuperar dados, todos os três oferecem suporte aos consumidores padrão, que usam a API GetRecords, e aos consumidores de Distribuição avançada (EFO), 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.

Atributos e casos de uso do modo On-demand Standard

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. É possível 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. Não é mais necessário provisionar essas cargas de trabalho na capacidade máxima, o que poderia 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, a cobrança é feita por GB de dados gravados e lidos em seus fluxos de dados. Não é necessário 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 obter mais informações, consulte Definição de preço do Amazon Kinesis Data Streams.

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. É necessário 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. Obtém-se pelo menos o dobro da throughput de gravação em comparação com os dados de leitura usando a API GetRecords. Recomenda-se o uso de 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 sob demanda (da mesma forma que com o modo de capacidade provisionada), é necessário especificar uma chave de partição com cada registro para gravar dados no fluxo de dados. 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. Recomenda-se repetir 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 ao usar 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. Ao usar 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.

Atributos e casos de uso do modo On-demand Advantage

On-demand Advantage é uma configuração de conta que permite mais recursos e fornece uma estrutura de preços diferentes para todos os fluxos sob demanda na região. Nesse modo, os fluxos sob demanda retêm sua funcionalidade e continuam a escalar automaticamente a capacidade com base no uso real dos dados. Se você quiser aquecer proativamente a capacidade de throughput de gravação de um fluxo, você pode configurar a throughput quente. Por exemplo, se a throughput de gravação do fluxo de dados variar entre 10 MB/s e 40 MB/s, é possível esperar que seja possível lidar com aumentos instantâneos da throughput de até 80 MB/s sem controle de utilização. No entanto, se você prevê que um evento futuro atinja um pico de cerca de 200 MB/s de tráfego, você pode configurar o fluxo com uma throughput quente de 200 MB/s para garantir que a capacidade esteja disponível quando a throughput de dados chegar. O uso de uma throughput quente não acarreta custos adicionais.

Outro benefício do modo On-demand Advantage é que os fluxos sob demanda fazem a transição para uma estrutura de preços mais simples. Com o modo habilitado, a conta não verá mais cobranças fixas por fluxo e você lidará apenas com a ingestão de dados, a recuperação de dados e as cobranças opcionais de retenção estendida. Cada dimensão de preço também tem um desconto significativo em comparação com a dimensão correspondente no On-demand Standard. Para obter mais informações, consulte Definição de preço do Amazon Kinesis Data Streams.

As recuperações de dados com distribuição avançada também não têm um preço superior em comparação com as recuperações de dados padrão nesse modo. A habilitação do On-demand Advantage compromete a conta com pelo menos 25 MiB/s de ingestão de dados e 25 MiB/s de recuperação de dados em todos os fluxos sob demanda. Para contas que atendem ao requisito mínimo de uso, o console do Kinesis Data Streams verifica se os padrões de uso da sua conta são adequados para usar o modo On-demand Advantage.

Se o uso de dados da sua conta estiver abaixo do exigido, você pagará a diferença como um déficit, mas ainda assim terá a mesma taxa de desconto. A ativação do On-demand Advantage também tem um período mínimo de 24 horas antes que você possa desativar o modo. No geral, o On-demand Advantage é a melhor opção para fluxos com o Kinesis Data Streams se você tiver um uso consistente de throughput próximo ou acima do compromisso mínimo, se precisar de muitos consumidores distribuídos ou se operar com centenas de fluxos de dados.

Casos de uso e atributos do modo provisionado

No modo provisionado, após criar o fluxo de dados, pode-se escalar dinamicamente a capacidade do fragmento usando o Console de gerenciamento da AWS ou a API UpdateShardCount. É possível 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. É possível usar o modo provisionado quando quiser ter um controle refinado da distribuição dos entre os fragmentos.

No modo provisionado, é necessário especificar o número de fragmentos para o fluxo de dados. Para determinar o tamanho inicial de um fluxo de dados, os seguintes valores de entrada são necessários:

  • 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 fluxo 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.

É possível 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 = ceiling(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 o fluxo de dados não for configurado 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 ao usar 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

Para cada fluxo de dados na sua Conta da AWS, é possível alternar entre os modos sob demanda e provisionado duas vezes a cada 24 horas. Alternar entre os modos não causa nenhuma interrupção nas aplicações que usam esse fluxo de dados. É possível continuar gravando e lendo o fluxo de dados. Durante a alternância entre os modos, de sob demanda para provisionado ou vice-versa, o status do fluxo é definido como Atualizando. É necessário esperar que o status do fluxo de dados passe a Ativo antes de tentar modificar suas propriedades novamente.

Ao mudar 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. Ao alternar do modo sob demanda para o provisionado, 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ê passa a ser responsável por monitorar e ajustar a contagem de fragmentos do fluxo de dados para acomodar a throughput de gravação da forma apropriada.

Você pode alternar do modo On-demand Standard para o modo On-demand Advantage ativando uma configuração na conta. Quando habilitada, a conta compromete pelo menos 25 MiB/s de ingestão de dados e 25 MiB/s de uso para recuperação de dados em todos os fluxos sob demanda na região. Depois de ativado, você deve esperar pelo menos 24 horas antes de poder desativar o On-demand Advantage, mas você pode solicitar a alteração a qualquer momento. Se quiser mudar de On-demand Advantage para On-demand Standard, você deve primeiro remover qualquer throughput quente configurada com fluxos sob demanda.