Valuta l'utilizzo dei tuoi stream DynamoDB - Amazon DynamoDB

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

Valuta l'utilizzo dei tuoi stream DynamoDB

In questa sezione viene fornita una panoramica su come valutare l'utilizzo dei flussi DynamoDB. Alcuni modelli di utilizzo non sono ottimali per DynamoDB e lasciano spazio all'ottimizzazione sia dal punto di vista delle prestazioni che dei costi.

Sono disponibili due integrazioni di streaming native per casi d'uso basati sullo streaming e sugli eventi:

Questa pagina si concentrerà solo sulle strategie di ottimizzazione dei costi per queste opzioni. Se invece vuoi scoprire come scegliere tra le due opzioni, consulta Opzioni di streaming per Change Data Capture.

Ottimizzazione dei costi per i flussi DynamoDB

Come indicato nella pagina dei prezzi dei flussi DynamoDB, indipendentemente dalla modalità di capacità effettiva di trasmissione della tabella, DynamoDB addebita il numero di richieste di lettura effettuate verso il flusso DynamoDB della tabella. Le richieste di lettura effettuate verso un flusso DynamoDB sono diverse dalle richieste di lettura effettuate verso una tabella DynamoDB.

Ogni richiesta di lettura in termini di flusso ha la forma di una chiamata API GetRecords che può restituire fino a 1000 record o 1 MB di record nella risposta, a seconda di quale delle due condizioni viene raggiunta per prima. Nessuno degli altri DynamoDB Stream viene addebitato e DynamoDB APIs Streams non viene addebitato in caso di inattività. In altre parole, se non viene effettuata alcuna richiesta di lettura a un flusso DynamoDB, non verrà addebitato alcun costo per l'attivazione di un flusso DynamoDB su una tabella.

Ecco alcune applicazioni consumer per i flussi DynamoDB:

  • AWS Lambda funzione/i

  • Applicazioni basate su Amazon Kinesis Data Streams

  • Applicazioni destinate ai clienti destinate ai consumatori create utilizzando un AWS SDK

Le richieste di lettura effettuate dagli utenti di AWS DynamoDB Streams basati su Lambda sono gratuite, mentre le chiamate effettuate dai consumatori di qualsiasi altro tipo sono a pagamento. Ogni mese, anche le prime 2.500.000 richieste di lettura effettuate da consumatori non Lambda sono gratuite. Questo vale per tutte le richieste di lettura effettuate a qualsiasi flusso DynamoDB in AWS un account per ogni regione. AWS

Monitoraggio dell'utilizzo dei flussi DynamoDB

I costi di DynamoDB Streams sulla console di fatturazione sono raggruppati per tutti i DynamoDB Streams in tutta la regione in un account. AWS AWS Attualmente, il tagging dei flussi DynamoDB non è supportato, quindi i tag di allocazione dei costi non possono essere utilizzati per identificare i costi granulari dei flussi DynamoDB. Il volume delle chiamate GetRecords può essere ottenuto a livello di flusso DynamoDB per calcolare i costi per flusso. Il volume è rappresentato dalla SuccessfulRequestLatency metrica e dalla statistica di DynamoDB Stream CloudWatch . SampleCount Questa metrica includerà anche GetRecords le chiamate effettuate da tabelle globali per eseguire la replica continua, nonché le chiamate effettuate dai consumatori AWS Lambda, entrambe gratuite. Per informazioni su altre CloudWatch metriche pubblicate da DynamoDB Streams, vedere. Parametri e dimensioni di DynamoDB

Utilizzo di AWS Lambda come consumatore

Valuta se l'utilizzo delle funzioni AWS Lambda come consumatori per DynamoDB Streams è fattibile perché ciò può eliminare i costi associati alla lettura da DynamoDB Stream. D'altra parte le applicazioni consumer basate sull'adattatore Kinesis dei flussi DynamoDB o sull'SDK verranno addebitate in base al numero di chiamate GetRecords effettuate verso il flusso DynamoDB.

Le chiamate alla funzione Lambda verranno addebitate in base ai prezzi standard di Lambda, tuttavia i flussi DynamoDB non addebiteranno alcun costo. Lambda eseguirà il polling delle partizioni presenti nel flusso DynamoDB ricercando i record a una velocità di base di 4 volte al secondo. Quando sono disponibili dei record, Lambda invoca la funzione e attende il risultato. Se l'elaborazione ha esito positivo, Lambda riprende il polling fino a quando non riceve più record.

Ottimizzazione delle applicazioni consumer basate sull'adattatore Kinesis dei flussi DynamoDB

Poiché le richieste di lettura effettuate da consumatori non basati su Lambda sono a pagamento per i flussi DynamoDB, è importante trovare un equilibrio tra la necessità di un'elaborazione quasi in tempo reale e il numero di volte in cui l'applicazione consumer deve eseguire il polling del flusso DynamoDB.

La frequenza di polling dei flussi DynamoDB che utilizza un'applicazione basata sull'adattatore Kinesis dei flussi DynamoDB è determinata dal valore idleTimeBetweenReadsInMillis configurato. Questo parametro determina la quantità di tempo in millisecondi che il consumatore deve attendere prima di elaborare una partizione nel caso in cui la precedente chiamata GetRecords effettuata alla stessa partizione non abbia restituito alcun record. Per impostazione predefinita. il valore di questo parametro è 1.000 ms. Se non è richiesta un'elaborazione quasi in tempo reale, questo parametro potrebbe essere aumentato per fare in modo che l'applicazione consumer effettui meno chiamate GetRecords e ottimizzi le chiamate ai flussi DynamoDB.

Ottimizzazione dei costi per il flusso di dati Kinesis

Quando un flusso di dati Kinesis è impostato come destinazione per fornire eventi di acquisizione dei dati di modifica per una tabella DynamoDB, il flusso di dati Kinesis potrebbe richiedere una gestione separata del dimensionamento che influirà sui costi complessivi. DynamoDB addebita i costi in termini di Change Data capture Units CDUs (), in cui ogni unità è composta da un elemento DynamoDB della dimensione di 1 KB tentato dal servizio DynamoDB verso il Kinesis Data Stream di destinazione.

Oltre ai costi del servizio DynamoDB, verranno applicati i costi standard del flusso di dati Kinesis. Come indicato nella pagina dei prezzi, i prezzi dei servizi variano in base alla modalità di capacità, assegnata e on demand, che sono diverse dalle modalità di capacità delle tabelle DynamoDB e sono definite dall'utente. A un livello elevato, il flusso di dati Kinesis addebitano una tariffa oraria in base alla modalità di capacità e ai dati importati nel flusso dal servizio DynamoDB. Potrebbero essere previsti costi aggiuntivi, ad esempio per il recupero dei dati (per la modalità on demand), la conservazione prolungata dei dati (oltre le 24 ore predefinite) e i recuperi fan-out ottimizzati dei consumatori a seconda della configurazione utente del flusso di dati Kinesis.

Monitoraggio dell'utilizzo del flusso di dati Kinesis

Kinesis Data Streams for DynamoDB pubblica metriche di DynamoDB oltre alle metriche standard di Kinesis Data Stream. CloudWatch È possibile che un Put tentativo del servizio DynamoDB venga bloccato dal servizio Kinesis a causa dell'insufficiente capacità di Kinesis Data Streams o da componenti dipendenti come AWS KMS un servizio che può essere configurato per crittografare i dati di Kinesis Data Stream a riposo.

Per ulteriori informazioni sulle CloudWatch metriche pubblicate dal servizio DynamoDB per Kinesis Data Stream, consulta. Monitoraggio di Change Data Capture con Kinesis Data Streams Per evitare costi aggiuntivi per i tentativi ripetuti del servizio a causa delle limitazioni della larghezza di banda della rete, è importante dimensionare correttamente il flusso di dati Kinesis nel caso di modalità assegnata.

Scelta della modalità di capacità corretta per il flusso di dati Kinesis

Il flusso di dati Kinesis è supportato in due modalità di capacità: modalità assegnata e modalità on demand.

  • Se il carico di lavoro che coinvolge il flusso di dati Kinesis presenta un traffico delle applicazioni prevedibile, un traffico coerente o che aumenta gradualmente o un traffico che può essere previsto con precisione, la modalità assegnata del flusso di dati Kinesis è quella adatta e sarà più efficiente in termini di costi

  • Se il carico di lavoro è nuovo, presenta un traffico delle applicazioni imprevedibile o se preferisci non gestire la capacità, la modalità on demand del flusso di dati Kinesis è quella adatta e sarà più efficiente in termini di costi

Una best practice per ottimizzare i costi sarebbe quella di valutare se la tabella DynamoDB associata al flusso di dati Kinesis ha un modello di traffico prevedibile in grado di sfruttare la modalità assegnata del flusso di dati Kinesis. Se il carico di lavoro è nuovo, puoi utilizzare la modalità on-demand per Kinesis Data Streams per alcune settimane iniziali, rivedere le metriche per comprendere CloudWatch i modelli di traffico e quindi passare lo stesso Stream alla modalità provisioning in base alla natura del carico di lavoro. Nel caso della modalità assegnata, la stima delle partizioni può essere effettuata seguendo le considerazioni sulla gestione delle partizioni del flusso di dati Kinesis.

Valutazione delle applicazioni consumer che utilizzano il flusso di dati Kinesis per DynamoDB

Poiché il flusso di dati Kinesis non effettua addebiti in base al numero di chiamate GetRecords come i flussi DynamoDB, le applicazioni consumer potrebbero effettuare il maggior numero possibile di chiamate, a condizione che la frequenza sia inferiore alla limitazione della larghezza di banda della rete per GetRecords. In termini di modalità on demand per il flusso di dati Kinesis, le letture dei dati vengono addebitate in base ai GB. Per il flusso di dati Kinesis in modalità assegnata, le letture non vengono addebitate se i dati risalgono a meno di 7 giorni prima. Nel caso di funzioni Lambda come consumatori del flusso di dati Kinesis, Lambda esegue il polling per ogni partizione nel flusso Kinesis per i record a una velocità di base di una volta al secondo.

Strategie di ottimizzazione dei costi per entrambi i tipi di utilizzo dei flussi

Filtraggio degli eventi per i consumatori AWS Lambda

Il filtraggio degli eventi Lambda consente di eliminare gli eventi in base a un criterio di filtro rendendoli disponibili nel batch di richiamo della funzione Lambda. Ciò ottimizza i costi di Lambda per l'elaborazione o l'eliminazione di record di flusso indesiderati all'interno della logica delle funzioni consumatore. Per ulteriori informazioni sulla configurazione del filtro degli eventi e sulla scrittura dei criteri di filtro, consulta Filtro eventi Lambda.

Ottimizzazione dei consumatori AWS Lambda

I costi potrebbero essere ulteriormente ottimizzati con l'ottimizzazione dei parametri di configurazione di Lambda, ad esempio aumentando BatchSize per elaborare un numero maggiore di record per chiamata, abilitando BisectBatchOnFunctionError per impedire l'elaborazione di duplicati (che comporta costi aggiuntivi) e impostando MaximumRetryAttempts modo da non dover effettuare troppi tentativi. Per impostazione predefinita, le chiamate Lambda non riuscite dei consumatori vengono ritentate all'infinito fino alla scadenza del record dal flusso, che per i flussi DynamoDB è di circa 24 ore ed è configurabile da 24 ore fino a 1 anno per il flusso di dati Kinesis. Le opzioni di configurazione Lambda aggiuntive disponibili, comprese quelle indicate in precedenza per i consumatori del flusso DynamoDB, sono disponibili nella Guida per gli sviluppatori di AWS Lambda.