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 FrameworkConcetti 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 utilizzareAWS Flow Frameworke Amazon SWF per gestire questi problemi. In questa sezione, esamineremo il modo in cui Amazon SWF fornisce meccanismi per garantire un funzionamento affidabile e previsibile dei flussi di lavoro, anche quando sono a esecuzione prolungata e dipendono da task asincroni eseguiti mediante elaborazione informatica e con interazione umana.
Assicurare una comunicazione affidabile
AWS Flow Frameworkassicura una comunicazione affidabile tra un lavoratore di flusso di lavoro e i relativi lavoratori di attività utilizzando Amazon SWF per inviare task a lavoratori di attività distribuite e restituire i risultati al lavoratore di 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 costante i task di flusso di lavoro e di attività pianificati e assicura un'unica esecuzione degli stessi.
-
Amazon SWF garantisce che un task di attività sarà completato senza errori restituendo un risultato valido oppure notificherà al lavoratore di flusso di lavoro che il task non è riuscito.
-
Amazon SWF archivia in modo prolungato il risultato di ogni attività completata oppure, per le attività non riuscite, archivia le informazioni pertinenti relative all'errore.
LaAWS Flow Frameworkutilizza quindi 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 supportare scenari come questi, il completamento dei flussi di lavoro e delle attività di AWS Flow Framework può richiedere un tempo arbitrariamente lungo: fino a un limite massimo di un anno per un'esecuzione di 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.
LaAWS Flow Frameworksoddisfa questa esigenza mediante Amazon SWF, che gestisce una cronologia di ogni istanza di 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.
Le applicazioni di AWS Flow Framework in genere non devono 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 informazioni complete sulla cronologia del flusso di lavoro, consultaCronologia del flusso di lavoronellaAmazon Simple Workflow Service.
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 di cui necessita per eseguire il task 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. In effetti, AWS Flow Framework fornisce varie soluzioni per ripetere le attività non riuscite e integra un meccanismo di gestione delle eccezioni compatibile con l'esecuzione distribuita e asincrona di task in un flusso di lavoro.