Decidi una strategia per la ricondivisione - 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à.

Decidi una strategia per la ricondivisione

Lo scopo del ripartizionamento in Flusso di dati Amazon Kinesis è quello di consentire al flusso di adattarsi ai cambiamenti alla velocità del flusso di dati. Si esegue la suddivisione in shard per aumentare la capacità (e i costi) del flusso. Si esegue l'unione dei shard per ridurre i costi (e la capacità) del flusso.

Un approccio al ripartizionamento potrebbe essere la suddivisione di ogni partizione nel flusso; tale operazione raddoppierebbe la capacità del flusso. Tuttavia, questo potrebbe fornire più capacità aggiuntiva a quella effettivamente necessaria e, di conseguenza, causare spese superflue.

È inoltre possibile utilizzare i parametri per determinare quali sono le partizioni calde o fredde, ovvero le partizioni che ricevono più dati o meno dati del previsto. È possibile scegliere di suddividere gli shard hot per aumentare la capacità per le chiavi hash indirizzate a questi shard. Analogamente, è possibile unire shard cold per sfruttare al meglio la loro capacità inutilizzata.

Puoi ottenere alcuni dati sulle prestazioni del tuo stream dai CloudWatch parametri Amazon pubblicati da Kinesis Data Streams. Tuttavia, è anche possibile raccogliere alcuni parametri per i tuoi flussi. Un approccio consiste nel registrare i valori chiave hash generati dalle chiavi di partizione per i tuoi record di dati. Tenere presente che una chiave di partizione è stata specificata nel momento in cui il record è stato aggiunto al flusso.

putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );

Kinesis Data MD5Streams utilizza per calcolare la chiave hash dalla chiave di partizione. Poiché si specifica la chiave di partizione per il record, è possibile utilizzarla per calcolare il valore della chiave hash MD5 per quel record e registrarlo.

Puoi anche registrare gli IDs shard a cui sono assegnati i tuoi record di dati. L'ID shard è disponibile utilizzando il metodo getShardId dell'oggetto putRecordResults restituito dal metodo putRecords e l'oggetto putRecordResult restituito dal metodo putRecord.

String shardId = putRecordResult.getShardId();

Con i valori dello shard IDs e delle chiavi hash, puoi determinare quali shard e hash key ricevono più o meno traffico. Quindi è possibile utilizzare il resharding per fornire più o meno capacità, a seconda della chiave.