AWS Flow Framework Concetti di base: esecuzione affidabile - AWS Flow Framework per Java

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

AWS Flow Framework Concetti di base: esecuzione affidabile

Le applicazioni distribuite asincrone devono risolvere problemi di affidabilità a cui non sono soggette le applicazioni convenzionali, tra cui:

  • Come assicurare una comunicazione affidabile tra componenti distribuiti asincroni, come i componenti a esecuzione prolungata su sistemi remoti.

  • Come impedire la perdita dei risultati in caso di errore o di disconnessione di un componente, in particolare nelle applicazioni a esecuzione prolungata.

  • Come gestire i componenti distribuiti con errori.

Le applicazioni possono fare affidamento su Amazon SWF per gestire questi problemi. AWS Flow Framework Esploreremo in che modo Amazon SWF fornisce meccanismi per garantire che i flussi di lavoro funzionino in modo affidabile e prevedibile, anche quando sono di lunga durata e dipendono da attività asincrone eseguite computazionalmente e con l'interazione umana.

Assicurare una comunicazione affidabile

AWS Flow Framework fornisce una comunicazione affidabile tra un operatore del flusso di lavoro e i relativi addetti alle attività utilizzando Amazon SWF per inviare attività ai lavoratori con attività distribuite e restituire i risultati al lavoratore del flusso di lavoro. Amazon SWF utilizza i seguenti metodi per garantire una comunicazione affidabile tra un lavoratore e le sue attività:

  • Amazon SWF archivia in modo duraturo le attività pianificate e le attività del flusso di lavoro e garantisce che vengano eseguite al massimo una volta.

  • Amazon SWF garantisce che un'attività venga completata correttamente e restituisca un risultato valido oppure notificherà all'operatore del flusso di lavoro che l'attività non è riuscita.

  • Amazon SWF archivia in modo duraturo il risultato di ogni attività completata o, per le attività non riuscite, memorizza le informazioni di errore pertinenti.

AWS Flow Framework Quindi utilizza i risultati dell'attività di Amazon SWF per determinare come procedere con l'esecuzione del flusso di lavoro.

Impedire la perdita dei risultati

Gestione della cronologia del flusso di lavoro

Un'attività che esegue un'operazione di data mining su un petabyte di dati può durare varie ore e un'attività che richiede a un lavoratore umano di eseguire un task complesso può durare vari giorni o addirittura settimane.

Per adattarsi a scenari come questi, il completamento AWS Flow Framework dei flussi di lavoro e delle attività può richiedere tempi arbitrari: fino al limite di un anno per l'esecuzione di un flusso di lavoro. L'esecuzione affidabile di processi a esecuzione prolungata necessita di un meccanismo per archiviare in modo permanente e continuo la cronologia di esecuzione del flusso di lavoro.

AWS Flow Framework Gestisce questo problema dipendendo da Amazon SWF, che mantiene una cronologia di esecuzione di ogni istanza del flusso di lavoro. La cronologia del flusso di lavoro fornisce un record completo e attendibile dell'avanzamento del flusso di lavoro, inclusi tutti i task di flusso di lavoro e di attività che sono stati pianificati e completati, nonché le informazioni restituite dalle attività completate o non riuscite.

AWS Flow Framework le applicazioni di solito non hanno bisogno di interagire direttamente con la cronologia del flusso di lavoro, sebbene possano accedervi se necessario. Nella maggior parte dei casi, le applicazioni possono semplicemente lasciare che il framework interagisca con la cronologia del flusso di lavoro in background. Per una discussione completa sulla cronologia del flusso di lavoro, consulta Workflow History nella Amazon Simple Workflow Service Developer Guide.

Esecuzione stateless

La cronologia delle esecuzioni consente ai lavoratori di flusso di lavoro di essere stateless. Se disponi di più istanze di un lavoratore di attività o di flusso di lavoro, qualsiasi lavoratore può eseguire qualsiasi task. Il lavoratore riceve tutte le informazioni sullo stato necessarie per eseguire l'attività da Amazon SWF.

Questo approccio rende i flussi di lavoro più affidabili. Ad esempio, se un lavoratore di attività non riesce, non è necessario riavviare il flusso di lavoro. È sufficiente riavviare il lavoratore, il quale eseguirà il polling nell'elenco dei task ed elaborerà tutti i task nell'elenco, indipendentemente dal momento in cui si è verificato l'errore. Puoi rendere l'intero flusso di lavoro a tolleranza di errore utilizzando due o più lavoratori di flusso di lavoro e di attività, eventualmente su sistemi distinti. In questo modo, in caso di errore in uno dei lavoratori, l'altro continuerà a gestire i task pianificati senza alcuna interruzione nell'avanzamento del flusso di lavoro.

Gestire componenti distribuiti con errori

Le attività spesso non hanno esito positivo per motivi effimeri, come una breve disconnessione, di conseguenza una strategia comune per la gestione delle attività non riuscite consiste nel ripetere l'attività. Anziché gestire un nuovo tentativo implementando complesse strategie di passaggio di messaggi, le applicazioni possono utilizzare AWS Flow Framework. Fornisce diversi meccanismi per riprovare le attività non riuscite e fornisce un meccanismo integrato di gestione delle eccezioni che funziona con l'esecuzione asincrona e distribuita delle attività in un flusso di lavoro.