Usa il resharding, lo scaling e l'elaborazione parallela per modificare il numero di shard - 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à.

Usa il resharding, lo scaling e l'elaborazione parallela per modificare il numero di shard

Il resharding ti consente di aumentare o diminuire il numero di shard in un flusso in modo da adattarsi alle variazioni di velocità nella circolazione di dati nel flusso. In genere il resharding viene eseguito da un'applicazione amministrativa che monitora i parametri di gestione di dati negli shard. Sebbene di per KCL sé non avvii operazioni di resharding, è progettato per adattarsi ai cambiamenti nel numero di shard derivanti dal resharding.

Come indicato inUtilizzate una tabella di leasing per tenere traccia degli shard elaborati dall'applicazione consumer KCL, KCL tiene traccia degli shard nel flusso utilizzando una tabella Amazon DynamoDB. Quando vengono creati nuovi shard a seguito del resharding, KCL scopre i nuovi shard e popola nuove righe nella tabella. I lavoratori trovano automaticamente i nuovi shard e creano processori per gestire i dati provenienti da questi shard. KCLInoltre, distribuisce gli shard nello stream tra tutti i worker e i processori di registrazione disponibili.

KCLGarantisce che tutti i dati presenti negli shard prima del resharding vengano elaborati per primi. Dopo che i dati sono stati elaborati, i dati dal nuovo shard vengono inviati a processori di record. In questo modo, KCL mantiene l'ordine in cui i record di dati sono stati aggiunti allo stream per una particolare chiave di partizione.

Esempio: ripartizione, scalabilità ed elaborazione parallela

L'esempio seguente illustra come ti KCL aiuta a gestire il ridimensionamento e il resharding:

  • Ad esempio, se l'applicazione è in esecuzione su un'EC2istanza e sta elaborando un flusso di dati Kinesis con quattro shard. Questa istanza ha un KCL worker e quattro processori di registrazione (un processore di record per ogni shard). Questi quattro processori di record sono eseguiti in parallelo all'interno dello stesso processo.

  • Di seguito, se si dimensiona l'applicazione per utilizzare un'altra istanza, si avranno due istanze per l'elaborazione di un flusso con quattro shard. Quando il KCL worker si avvia sulla seconda istanza, bilancia il carico rispetto alla prima istanza, in modo che ogni istanza ora elabori due shard.

  • Se si decide di frazionare i quattro shard in cinque shard. KCLAncora una volta coordina l'elaborazione tra le istanze: un'istanza elabora tre frammenti e l'altra elabora due frammenti. Un coordinamento simile si verifica quando si fondono shard.

In genere, quando si utilizza ilKCL, è necessario assicurarsi che il numero di istanze non superi il numero di shard (ad eccezione dei casi di errore in standby). Ogni shard viene elaborato esattamente da un KCL worker e ha esattamente un processore di record corrispondente, quindi non sono necessarie più istanze per elaborare uno shard. Tuttavia, un lavoratore è in grado di elaborare qualsiasi numero di shard, pertanto non è un problema se il numero di shard supera il numero di istanze.

Per aumentare l'elaborazione nella tua applicazione, è consigliabile testare una combinazione dei seguenti approcci:

  • Aumentare la dimensione dell'istanza (dato che tutti i processori di record sono eseguiti in parallelo all'interno di un processo)

  • Aumentare il numero di istanze fino al numero massimo di shard aperti (dato che gli shard possono essere elaborati in modo indipendente)

  • Aumentare il numero di shard (aumentando di conseguenza il livello di parallelismo)

Si noti che è possibile utilizzare il dimensionamento automatico per dimensionare automaticamente le istanze in base ai parametri appropriati. Per ulteriori informazioni, consulta la Amazon EC2 Auto Scaling User Guide.

Quando il resharding aumenta il numero di shard nello stream, il corrispondente aumento del numero di record processor aumenta il carico sulle EC2 istanze che li ospitano. Se le istanze fanno parte di un gruppo Auto Scaling e il carico aumenta a sufficienza, il gruppo Auto Scaling aggiunge più istanze per gestire l'aumento del carico. È necessario configurare le istanze per avviare la tua applicazione del flusso di dati Amazon Kinesis all'avvio, in modo che i worker e i processori di record aggiuntivi diventino immediatamente attivi nella nuova istanza.

Per ulteriori informazioni sul resharding, consulta Condividi nuovamente uno stream.