

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à.

# Ottimizza i produttori di Kinesis Data Streams
<a name="advanced-producers"></a>

Puoi ottimizzare ulteriormente i tuoi produttori di Amazon Kinesis Data Streams in base al comportamento specifico che vedi. Consulta i seguenti argomenti per identificare le soluzioni.

**Topics**
+ [Personalizza i tentativi KPL e il comportamento dei limiti di velocità](kinesis-producer-adv-retries-rate-limiting.md)
+ [Applica le migliori pratiche all'aggregazione KPL](kinesis-producer-adv-aggregation.md)

# Personalizza i tentativi KPL e il comportamento dei limiti di velocità
<a name="kinesis-producer-adv-retries-rate-limiting"></a>

Quando aggiungi record utente di Amazon Kinesis Producer Library (KPL) utilizzando l'`addUserRecord()`operazione KPL, a un record viene assegnato un timestamp e aggiunto a un buffer con una scadenza impostata dal parametro di configurazione. `RecordMaxBufferedTime` Questa combinazione stamp/deadline temporale imposta la priorità del 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 del flusso di dati Amazon Kinesis utilizzando una chiamata all'operazione dell'API del 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 del time-to-live record

Questa strategia consente di includere i record utente KPL riprovati nelle successive chiamate all'API Kinesis Data Streams, per migliorare il throughput e ridurre la complessità, rafforzando al contempo il valore del record Kinesis Data Streams. time-to-live 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 velocità
<a name="kinesis-producer-adv-retries-rate-limiting-rate-limit"></a>

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.

# Applica le migliori pratiche all'aggregazione KPL
<a name="kinesis-producer-adv-aggregation"></a>

Sebbene lo schema dei numeri di sequenza dei record Amazon Kinesis Data Streams risultanti rimanga lo stesso, l'aggregazione fa sì che l'indicizzazione dei record utente di Amazon Kinesis Producer Library (KPL) contenuti in un record Kinesis Data Streams aggregato inizi da 0 (zero); tuttavia, purché non si faccia affidamento sui numeri di sequenza per identificare in modo univoco i record utente KPL, il codice puoi ignorarlo, come l'aggregazione (dei tuoi record utente KPL in un record Kinesis Data Streams) e la successiva disaggregazione (di un record Kinesis Data Streams nei tuoi record utente KPL) se ne occupa automaticamente per te. Questo vale sia che il consumatore utilizzi KCL o l' AWS SDK. Per utilizzare questa funzionalità di aggregazione, dovrai inserire la parte Java di KPL nella tua build se il tuo consumatore è stato scritto utilizzando l'API fornita nell'SDK. AWS 

Per utilizzare i numeri di sequenza come identificatori univoci dei tuoi record utente della KPL, ti consigliamo di usare le operazioni `public int hashCode()` e `public boolean equals(Object obj)` fornite in `Record` e `UserRecord` per abilitare il confronto dei record utente della KPL. Inoltre, per esaminare il numero di sequenza secondaria del tuo record utente &KPL;, è possibile trasmetterlo a un'istanza `UserRecord` e recuperare il suo numero di sequenza secondaria.

Per ulteriori informazioni, consulta [Implementa la deaggregazione dei consumatori](kinesis-kpl-consumer-deaggregation.md).