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