Sono piuttosto nuovo nell'informatica distribuita e vorrei ricevere assistenza con l'architettura generale della mia applicazione.
La mia applicazione ha lavori che possono essere aggiunti a un JobQueue. Quindi è possibile configurare una o più istanze di JobRunner per eseguire i lavori in coda e generare JobResults. I JobResults verranno quindi inviati ad alcune destinazioni come un rapporto, un file di registro, una notifica via email ecc.
Tuttavia, voglio anche essere in grado di raggruppare un gruppo correlato di lavori in un JobSet che a sua volta verrà elaborato in un JobSetResult che contiene tutti i JobResult corrispondenti. Ogni Job, comunque, sarà comunque elaborato indipendentemente da un JobRunner. Una volta che tutti i JobResults sono stati raccolti, il JobResult finale verrà inviato ad alcune destinazioni come una notifica di log o email.
Ad esempio, un utente può creare un insieme di lavori per elaborare un elenco di file. Creerebbero un JobSet contenente un numero di FileProcessingJobs e lo invieranno per essere eseguiti. Ovviamente non voglio che l'utente ottenga una notifica via e-mail per ogni file, ma solo il JobSetResult finale quando l'intero JobSet è completo.
Ho problemi a trovare il modo migliore per tenere traccia di tutto ciò in un ambiente distribuito. C'è qualche schema di progettazione architettonica esistente che corrisponde a quello che sto cercando di fare?