Jump to content
Sign in to follow this  
usu

Gestione di una coda di azioni

Recommended Posts

Si sarebbe una buona idea, anche perchè considero che non siano job particolarmente impegnativi, per cui si possono eseguire anche quasi online con un cluster decente. C'è qualcuno che usa mapreduce in questo modo tra questi famosi citati?

 

Non ne ho la minima idea, questo è quel che farei io pensando non solo all'immediato presente, ma anche a carichi futuri :)

Share this post


Link to post
Share on other sites
Le operazioni da eseguire sono così semplici che si potrebbe azzardare anche una scrittura in C++ :)

 

Alla fine si tratta di prendere il file xml degli rss, controllare con un sha1 se è cambiato qualcosa rispetto all'ultimo hash salvato, in caso affermativo elaborare il file xml per estrapolare i dati (ad esempio con la libreria xerces).

 

Una volta tornato l'output dal reduce andiamo a bombardare i vari siti con le nuove news da aggiungere (e qui si può usare ancora C o altri linguaggi). :)

 

Mi sembra in effetti un'ottima soluzione al "problema", grazie! :)

 

C'è qualcuno che usa mapreduce in questo modo tra questi famosi citati?

 

Sembra che tra servizi del genere nessuno riveli i dettagli della propria infrastruttura ^^'

Share this post


Link to post
Share on other sites

Alla fine si tratta di prendere il file xml degli rss, controllare con un sha1 se è cambiato qualcosa rispetto all'ultimo hash salvato, in caso affermativo elaborare il file xml per estrapolare i dati (ad esempio con la libreria xerces).

 

E se io volessi usare un più performante md5 ? :ciapet:

Share this post


Link to post
Share on other sites
Se non sbaglio con md5 c'è probabilità superiore di collisioni :stordita:

 

Non sbagli.

Ma qui si tratta di confrontare un XML, non di generare l'hash di tutta la biblioteca del congresso americano.

 

Ma comunque stavo scherzando, ci potrà essere qualche microsecondo di differenza tra il calcolo di un md5 ed un sha1.

 

Su un file da 800M:

 

$ time md5sum FW900.2010_0403.93.iso 
38ed3132aee503f1cfcac378296dbb23  FW900.2010_0403.93.iso

real	0m7.743s
user	0m2.860s
sys	0m0.610s

$ time sha1sum FW900.2010_0403.93.iso 
fcecbf3e5c983998d1a7945f08645792646c0985  FW900.2010_0403.93.iso

real	0m4.197s
user	0m3.860s
sys	0m0.340s

 

figuriamoci su un file da pochi K.

Share this post


Link to post
Share on other sites
Non sbagli.

Ma qui si tratta di confrontare un XML, non di generare l'hash di tutta la biblioteca del congresso americano.

 

Ma comunque stavo scherzando, ci potrà essere qualche microsecondo di differenza tra il calcolo di un md5 ed un sha1.

 

Anche io ero ironico ;)

 

Per cose del genere, dove contano anche le frazioni di secondo su larga scala, sarebbe effettivamente meglio usare md5; se non altro perché, anche in caso di collisioni, quello che può capitarti al più è che salti un round di bombardamento feed per un sito: per i siti molto attivi alla fine si tratterebbe di aspettare poco, dato che son molto prolifici e vengono controllati più spesso, per i siti poco attivi un salto di feed non sarebbe tutto questo danno :)

Share this post


Link to post
Share on other sites

Basterebbe usare un Feed RSS 2.0 'valido' e basarsi sul nodo "lastBuildDate" che da specifiche 2.0 indica proprio la data di ultima modifica.

 

Se si fa il fetch ogni 5 minuti e la data presente in lastBuildDate è <= 300 secondi fa, il feed è cambiato.

Share this post


Link to post
Share on other sites
Basterebbe usare un Feed RSS 2.0 'valido' e basarsi sul nodo "lastBuildDate" che da specifiche 2.0 indica proprio la data di ultima modifica.

 

Se si fa il fetch ogni 5 minuti e la data presente in lastBuildDate è

 

Lo so bene, ma così facendo processi a vuoto il documento xml, molto meglio mantenere un hash del file ;)

Share this post


Link to post
Share on other sites
Lo so bene, ma così facendo processi a vuoto il documento xml, molto meglio mantenere un hash del file ;)

 

Ma va, leggere i primi 512byte o 1k di dati pensi sia più invasivo del calcolarne l'hash? Considera che per calcolarne l'hash devi leggere tutto il file, mentre invece per prendere la data di modifica ti basterebbe leggere la prima parte del file.

 

Se butta male e chi fa l'RSS è un pirla e mette la data di modifica in coda, impieghi comunque meno tempo a fare il parse del file XML intero piuttosto che calcolarne prima l'hash (e quindi leggere comunque tutto il file) e poi leggere ugualmente il file xml in caso di modifiche.

 

In soldoni: se fai l'hash leggi tutto il file un minimo di una volta, fino ad un massimo di due, e fai una computazione su tutto l'xml. Se leggi direttamente la data leggi una manciata di byte la prima volta e tutto l'xml in caso di variazioni (nel migliore dei casi) oppure tutto l'xml una sola volta nel caso l'autore fosse un pirla.

 

EDIT: l'hash è utile per tenere un marcatore che ti permette di identificare modifiche in file che non si prestano allo scopo (una iso, un dump di qualcosa etc etc) ma secondo me se il file prevede già la possibilità di valuterne le variazioni, l'hash diventa superfluo, a meno che non si voglia tenere una sorta di storico senza portarsi dietro tutto il file.

Edited by guest

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×