Forum: Italian Ruby user group Concorrenza

Posted by Luca P. (luca_p)
on 2012-06-18 09:13
(Received via mailing list)
Ciao a tutti,
complimenti per il Ruby Day, un'iniziativa veramente fantastica e ben
riuscita.

Sto sviluppando un applicativo che prevede varie attivit di download,
processing con Imagemagick, e upload di immagini, il tutto 
periodicamente
ogni X minuti e all'infinito per ogni utente.
L'iterazione corrente usa Resque pi resque-scheduler per il 
re-enqueueing
dei job, con due worker, quindi due CPU pi il lavoro di ImageMagick che
gi multithreaded e onestamente mi pare piuttosto efficiente, ma la
scalabilit mi preoccupa un po'.

Conosco piuttosto bene Celluloid dal punto di vista della concorrenza, 
ma
finora l'avevo solamente utilizzato per gestire flussi di eventi di
telefonia o XMPP, che sarebbe poi il suo impiego primario essendo 
ispirato
da Erlang.

Siccome il budget  veramente molto stringato e ho anche poco tempo 
libero,
prima di imbarcarmi in una re-implementazione con Celluloid mi 
piacerebbe
avere un'opinione da parte vostra sull'eventuale possibilit di 
prestazioni
migliori usando un sistema actor-based, trattandosi di una procedura con
svariati tempi morti bloccanti (download-processing-upload). Il tutto
andrebbe spostato sotto JRuby per sfruttare i thread nativi, oppure
semplicemente lanciato in pi istanze.

Che ne pensate?

Luca
Posted by Matteo Collina (Guest)
on 2012-06-18 17:35
(Received via mailing list)
Ciao Luca,

Grazie per i complimenti da parte di tutto lo staff RubyDay!

La soluzione migliore consiste nell'uso del Reactor Pattern: 
EventMachine o
Nodejs che sia.
In questo modo ogni worker potrebbe gestire fino molti job in
contemporanea, poich
la maggior parte dei task  I/O il download delle immagini e la
comunicazione con ImageMagick.
Infine, siccome sei asincrono, potresti evitarti del tutto la gestione 
via
resque, e svolgere tutto
direttamente dai processi principali alla bisogna.

Ciao,

Matteo
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.