Personalize KPL novas tentativas e o comportamento do limite de taxa - 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á.

Personalize KPL novas tentativas e o comportamento do limite de taxa

Quando você adiciona registros de usuário da Kinesis Producer Library (KPL) usando a KPL addUserRecord() operação, um registro recebe um registro de data e hora e é adicionado a um buffer com um prazo definido pelo parâmetro de configuração. RecordMaxBufferedTime Essa combinação time stamp/prazo define a prioridade do buffer. Os registros são descarregados do buffer com base nos seguintes critérios:

  • Prioridade do buffer

  • Configuração de agregação

  • Configuração de coleta

Os parâmetros de configuração de coleta e agregação que afetam o comportamento do buffer são os seguintes:

  • AggregationMaxCount

  • AggregationMaxSize

  • CollectionMaxCount

  • CollectionMaxSize

Os registros liberados são então enviados para seu stream de dados do Kinesis como registros do Amazon Kinesis Data Streams usando uma chamada para a operação do Kinesis Data Streams. API PutRecords A operação PutRecords envia solicitações ao stream que ocasionalmente apresenta falhas parciais ou totais. Os registros que falham são automaticamente adicionados de volta ao KPL buffer. O novo prazo é definido com base no mínimo destes dois valores:

  • Metade da configuração de RecordMaxBufferedTime atual

  • O time-to-live valor do registro

Essa estratégia permite que registros repetidos de KPL usuários sejam incluídos em chamadas subsequentes do Kinesis Data API Streams, para melhorar a taxa de transferência e reduzir a complexidade, ao mesmo tempo em que reforça o valor do registro do Kinesis Data Streams. time-to-live Não há um algoritmo de recuo, tornando essa uma estratégia de tentativa relativamente agressiva. O spam devido ao excesso de tentativas é evitado pela limitação de taxas, discutida na próxima seção.

Limitação de taxa

KPLIsso inclui um recurso de limitação de taxa, que limita a taxa de transferência por fragmento enviada por um único produtor. A limitação de taxas é implementada usando um algoritmo de bucket de token com buckets separados para bytes e registros do Kinesis Data Streams. Cada gravação bem-sucedida em um fluxo de dados do Kinesis adiciona um token (ou vários tokens) a cada bucket, até um determinado limite. Esse limite é configurável, mas por padrão é definido como 50% maior que o limite de estilhaço real, para permitir a saturação de estilhaços a partir de um único produtor.

Você pode reduzir esse limite para diminuir o spam devido ao excesso de tentativas. No entanto, a melhor prática é que cada produtor tente novamente para uma throughput máxima de maneira agressiva e lide com qualquer limitação resultante determinada como excessiva por meio da expansão da capacidade do stream e da implementação de uma estratégia de chave de partição apropriada.