Ricevo file su HDFS e ho un'app java legacy che controlla i nuovi file ogni 15 minuti, esegue alcune trasformazioni e li scrive su un server remoto.
Ora, sto affrontando un problema di ridimensionamento con questa APP. Non voglio riscrivere questa complessa applicazione, sto pensando di aggiungere alcuni meccanismi di distribuzione dei file e di eseguire più istanze di questa app in parallelo.
Un modo per farlo è scrivere i percorsi dei file in qualche coda e tutte queste istanze parallele ascolteranno questa coda. Ciò richiederà pochissime modifiche e mi sembra una buona soluzione, ma ciò richiederà un nuovo processo leggero che verificherà i nuovi file su HDFS e scriverà i loro nomi in coda.
C'è un buon modo per evitare questo nuovo processo?
Sto pensando alle seguenti opzioni:
- Tutte le istanze parallele controllano i file nella directory di input e quindi cercano di acquisire il blocco per il file corrente in Database o Redis.
- Tutte le istanze parallele votano e eleggono il leader per ogni file che le elabora.