Nuovi tentativi &KPL; e limitazione della frequenza - Flusso di dati Amazon Kinesis

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nuovi tentativi &KPL; e limitazione della frequenza

Quando aggiungi i record utente di Kinesis Producer Library (KPL) tramite l'operazione addUserRecord() KPL, un timestamp viene assegnato a un record e aggiunto a un buffer con una scadenza impostata dal parametro di configurazione RecordMaxBufferedTime. Questa combinazione timestamp/scadenza imposta la priorità di buffer. I record vengono svuotati dal buffer in base ai seguenti criteri:

  • Priorità buffer

  • Configurazione aggregazione

  • Configurazione della raccolta

I parametri di configurazione di aggregazione e raccolta che influiscono sul comportamento del buffer sono i seguenti:

  • AggregationMaxCount

  • AggregationMaxSize

  • CollectionMaxCount

  • CollectionMaxSize

I record scaricati vengono quindi inviati al flusso di dati Kinesis come record di Flusso di dati Amazon Kinesis utilizzando una chiamata all'operazione dell'API Flusso di dati Kinesis PutRecords. L'operazione PutRecords invia le richieste al tuo flusso che occasionalmente restituiscono errori totali o parziali. I record con esito negativo vengono automaticamente aggiunti al buffer della KPL. La nuova scadenza è impostata sul minimo di questi due valori:

  • Metà della configurazione RecordMaxBufferedTime corrente

  • Il valore time-to-live del record

Questa strategia consente di includere i record dell'utente KPL ripetuti in chiamate API di Flusso di dati Kinesis successive, per migliorare la velocità di trasmissione effettiva e ridurre la complessità durante l'applicazione del valore di time-to-live del record di Flusso di dati Kinesis. Non esiste un algoritmo di backoff, pertanto questa strategia di nuovi tentativi è relativamente aggressiva. Lo spamming causato da un numero di nuovi tentativi eccessivo viene impedito dalla limitazione della frequenza, discussa nella sezione successiva.

Limitazione della frequenza

La KPL include una funzione di limitazione della frequenza, che limita la velocità di trasmissione effettiva della partizione inviata da un singolo producer. La limitazione della frequenza viene implementata utilizzando un algoritmo bucket di token con bucket separati sia per i byte sia per i record . Ogni scrittura riuscita in un flusso di dati Kinesis aggiunge uno o più token a ciascun bucket, fino a una determinata soglia. Questa soglia è configurabile ma, per impostazione predefinita, è impostata su un valore del 50% superiore rispetto al limite di shard effettivo, per permettere la saturazione dello shard da un singolo producer.

È possibile ridurre questo limite per ridurre lo spamming dovuto a un numero eccessivo di nuovi tentativi. Tuttavia, la best practice per ogni producer è riprovare per ottenere il massimo rendimento in modo aggressivo e gestire qualsiasi throttling risultante considerato eccessivo espandendo la capacità del flusso e implementando una strategia di chiave di partizione appropriata.