Raggiungi la prontezza di produzione per il tuo servizio gestito per le applicazioni Apache Flink - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

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

Raggiungi la prontezza di produzione per il tuo servizio gestito per le applicazioni Apache Flink

Questa è una raccolta di aspetti importanti sull'esecuzione di applicazioni di produzione sul servizio gestito da Amazon per Apache Flink. Non si tratta di un elenco esaustivo, ma piuttosto del minimo indispensabile a cui prestare attenzione prima di inserire un'applicazione in produzione.

Effettua il test di caricamento delle tue applicazioni

Alcuni problemi con le applicazioni si manifestano solo in condizioni di carico elevato. Abbiamo assistito a casi in cui le applicazioni sembravano funzionanti, eppure un evento operativo ha notevolmente amplificato il carico sull'applicazione. Ciò può avvenire in modo completamente indipendente dall'applicazione stessa. Se l'origine dati o il data sink non sono disponibili per un paio d'ore, l'applicazione Flink non può fare progressi. Una volta risolto il problema, si accumula un arretrato di dati non elaborati, che può esaurire completamente le risorse disponibili. Il carico può quindi amplificare bug o problemi di prestazioni che non erano mai emersi prima.

È quindi essenziale eseguire test di carico adeguati per le applicazioni di produzione. Le domande a cui è necessario rispondere durante questi test di carico includono:

  • L'applicazione è stabile in presenza di carichi elevati e sostenuti?

  • L'applicazione può ancora registrare un savepoint in caso di picco di carico?

  • Quanto tempo è necessario per elaborare un backlog di 1 ora? E quanto tempo è necessario per 24 ore (a seconda della conservazione massima dei dati nello stream)?

  • La velocità di trasmissione effettiva dell'applicazione aumenta quando l'applicazione viene dimensionata?

Quando si utilizzano dati da un flusso di dati, questi scenari possono essere simulati immettendoli nel flusso per un certo periodo di tempo. Quindi avviate l'applicazione e fate in modo che consumi i dati dall'inizio del tempo. Ad esempio, utilizzate una posizione iniziale di TRIM_HORIZON nel caso di un flusso di dati Kinesis.

Definisci il parallelismo massimo

Il parallelismo massimo definisce il parallelismo massimo a cui un'applicazione che ha uno stato può dimensionarsi. Viene definito quando lo stato viene creato per la prima volta e non è possibile dimensionare l'operatore oltre questo valore massimo senza eliminare lo stato.

Il parallelismo massimo viene impostato quando lo stato viene creato per la prima volta.

Per impostazione predefinita, il parallelismo massimo è impostato su:

  • 128, se il parallelismo è <= 128

  • MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15): se il parallelismo è > 128

Se intendete scalare l'applicazione con un parallelismo superiore a 128, dovreste definire esplicitamente il parallelismo massimo.

È possibile definire il parallelismo massimo a livello di applicazione, con o con un solo operatore. env.setMaxParallelism(x) Salvo diversa indicazione, tutti gli operatori ereditano il parallelismo Max dell'applicazione.

Per ulteriori informazioni, vedere Impostazione del parallelismo massimo nella documentazione di Apache Flink.

Impostare un UUID per tutti gli operatori

Un UUID viene utilizzato nell'operazione in cui Flink mappa un savepoint a un singolo operatore. L'impostazione di un UUID specifico per ciascun operatore fornisce una mappatura stabile per il processo di ripristino del savepoint.

.map(...).uid("my-map-function")

Per maggiori informazioni, consulta Checklist di preparazione per la produzione.