Sono in fase di pianificazione del tentativo di creare un sistema di elaborazione file distribuito in Java e sto cercando feedback e consigli:
Problema : esiste un numero elevato di file pubblicati continuamente su un server FTP che dobbiamo catturare, elaborare e trasmettere.
Idea soluzione : un nodo master cercherà nuovi file su un server FTP e assegnerà il lavoro di elaborazione ai nodi figlio. Il nodo principale invierà al figlio un messaggio JMS che gli dirà quale file elaborare e il bambino invierà una risposta quando sarà terminato e chiederà più lavoro.
Se il nodo master scende per qualche motivo, uno dei nodi figlio dovrebbe presumere il ruolo di maestro. La mia idea per l'implementazione di questo è stata quella di avere una collezione "lock" in un MongoDB che contenga informazioni sul nodo master, oltre a un tempo di scadenza del blocco. Ogni 15 secondi circa il nodo master aggiornerà il blocco e aggiornerà il tempo di scadenza a 30 secondi in futuro. Se i nodi figli vedono che il blocco è scaduto, uno di questi si assegnerà come nodo principale.
Sto cercando feedback su questo progetto e mi chiedo se qualcuno ha consigli su miglioramenti / framework java o strumenti già esistenti che posso sfruttare per qualcosa di simile.
Grazie!