Ho il compito di ridisegnare un processore di catalogo esistente e il requisito è il seguente Requisiti Ho da 5 a 10 fornitori (ogni venditore può avere più negozi) che mi fornirebbe un file 'XML' per negozio. In pratica, 1 file xml di prodotti per archivio e più file di archivio per fornitore. La dimensione massima del file può essere di 500 MB e quella minima di 100 MB I prodotti medi per file potrebbero essere 100.000.
Il formato xml di esempio potrebbe essere come questo
<?xml>
<catalog>
<product>...</product>
<product>...</product>
<product>...</product>
</catalog>
Non occorrono più di 30 minuti per scaricare il file per negozio e questi file vengono aggiornati una volta al giorno o ogni 3 o 6 ore.
Ora il requisito di priorità è che i dettagli del prodotto sono altamente non organizzati e questi file devono essere organizzati, elaborati (più di 10 processi) e convertiti in un altro oggetto comune (json) e quindi archiviati in Cassandra .
Il responsabile della mia tecnologia mi ha consigliato di progettare con Apache Flink e Kafka su HDFS, in cui flink direttamente i file dai server dei fornitori e li avvia durante lo streaming.
La mia opinione era che, in entrambi i casi, i file sono di dimensioni finite e non c'è molto bisogno di trasmetterli in streaming. Quindi ho pensato di avere uno schedulatore autonomo come downloader da scaricare e caricare i file su HDFS. Non appena i file vengono caricati su HDFS, posso attivare l'elaborazione Flink e archiviarla in Cassandra.
La mia domanda qui è che , sapendo che i file sono di dimensioni finite e conteggi finiti irresponsabili del numero di venditori, Lo stream che elabora un overkill o un'elaborazione di batch sarebbe un carico di latenza più tardi?