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.
Argomenti
Ottimizzazione dei costi per i flussi DynamoDB
Come indicato nella pagina dei prezzi
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
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.