Værktøjer som virker med Perl

[email protected] (Niels Jakob Darger) Sun, 11 Dec 2011 10:38:13 +0100
Newsgroups perl.copenhagen
Message-ID <[email protected]>
Hej,

Jeg er på et projekt hos en større broadcaster. Projektet involverer 
real-tidsanalyse af data, det er specielt kritisk under "broadcast 
events", f.eks. VM 2010, OL 2012 eller ikke-programsatte 
(nyheds)begivenheder. Nok om det.

Spørgsmålet er hvilke værktøjer man kunne benytte til de generelle 
problemer der skal tackles - distribueret processering, distribueret 
låsning/synkronisering, distribueret lagring, messaging etc., etc.?

Vi har et heterogent miljø med Perl og Java. Der er mange kølige 
teknologier i Java: Hadoop (som jeg har vældig gode erfaringer med, både 
i Java og Perl - via "Streaming mode"), Lucene (vældig køligt), 
ActiveMQ, Cassandra etc., men det er nu tit hurtigere - og sjovere - at 
udvikle i Perl.

Hvad er godt til de forskellige klasser af problemer:

Messaging: ActiveMQ (eller WebSphere MQ) virker fint med Java, men hvad 
med Perl? Har folk erfaringer med at snakke Thrift - eller med andre 
messaging-teknologier?

Kommunikation: ICE (http://www.zeroc.com/) - er mange ting - det virker 
fint med C++ (og sikkert med Java, har ikke prøvet), men ikke med Perl. 
Gode alternativer? XML-RPC og SOAP virker, meeen, det er snart 2012 og 
desuden er serialisering og deserialisering af XML ikke det mest effektive.

Distribueret processering: Hadoop fungerer naturligvis bedst med Java 
men det virker med C++ (Pipes) og fungerer fortrinligt med Perl 
(Streaming). Storm (https://github.com/nathanmarz/storm) kender jeg 
endnu ikke - der skal kigges på det snarest. Storm *kunne* være en 
kandidat til at blive inddraget i ovenstående projekt men deadlines og 
(potentielt manglende) modenhed i Storm trækker i den anden retning.

Distribueret lagring/caching: Memcached virker fint med Perl. 
Protokolkompatible - Membase, MemcacheDB etc. - må antages også at 
virke. HDFS virker vist med Perl via Thrift, jeg har dog ikke prøvet - 
vi bruger (de Java-baserede) Hadoop/HDFS kommandoer med Perl hvilket 
naturligvis ikke er super-effektivt da det medfører fork/exec, men det 
virker.

Redis skulle virke. Har nogen erfaringer?

CouchDB virker. Jeg har dog ikke produktionserfaringer med det da en 
anden teknologi blev valgt efter at vi havde lavet en prototype i 
CouchDB (det var nu ikke et decideret fravalg af CouchCB). MongoDB eller 
andet?

Distributed låsning: Jeg skal have kigget på Zookeeper. Jeg skal i det 
hele taget se få kigget på de andre teknologier i Hadoop-sfæren: HBase, 
Hive, Pig, Mahout etc. Disse værktøjer er (måske med undtagelse af 
Zookeeper) ikke specielt realtidsvenlige men er interessante i andre 
sammenhænge.

Swig (http://www.swig.org/) er aldeles brugbart og rimeligt let 
tilgængeligt. Muligvis lettere end XS som jag aldrig rigtigt har kigget 
på. Swig er nyttig til implementering af koderegioner hvor der bare 
kræves rå hastighed.

Der er andre klasser af problemer - hvilke teknologier har folk (gode) 
erfaringer med, helst med Perl, alternativt med C++ eller Java (man kan 
jo som regel med hiv og skub få interfacet det med Perl)?

Hilsen
Jakob