Links

  • 1. Sogeti
  • 2. JBoss
  • 3. IBM
  • 4. Oracle
  • 5. SpringSource
  • 6. NL-JUG
  • 7. Java

Archives

Syndication  RSS 2.0

RSS 1.0
RSS 2.0

Bookmark this site

Add 'JCN Blog' site to delicious  Add 'JCN Blog' site to technorati  Add 'JCN Blog' site to digg  Add 'JCN Blog' site to dzone

Posted by Jaap Coomans at 10:12 on Wednesday 13 November    Add 'JFall 2013: Designing Distributed Programs with a Raspberry Pi cluster' site to delicious  Add 'JFall 2013: Designing Distributed Programs with a Raspberry Pi cluster' site to technorati  Add 'JFall 2013: Designing Distributed Programs with a Raspberry Pi cluster' site to digg  Add 'JFall 2013: Designing Distributed Programs with a Raspberry Pi cluster' site to dzone

De eerste sessie na de middagkeynote op JFall 2013 was voor mij “Designing Distributed Programs with a Raspberry Pi cluster” door Arjan Lamers van First8. Natuurlijk kwam ik in eerste instantie af op het geek-appeal van de titel, maar al snel bleek dit ook inhoudelijk een erg goede sessie.

De essentie van het verhaal was dat Arjan een proof-of-concept omgeving had gemaakt voor gedistribueerd programmeren met behulp van een batterij Raspberry Pi’s. De hardware setup bestond uit twee clusters van 4 Raspberry Pi’s, per cluster aangesloten op een switch. Deze twee switches waren onderling met elkaar verbonden. Zo had hij dus voor een zeer beperkt budget twee “datacenters” met ieder 4 nodes. Naast dat dit voordelig, compact en geeky is, brengt het ook als voordeel mee dat de Pi’s traag zijn. De redenatie van Arjan: als je je gedistribueerde applicatie op een Pi al goed kan laten performen, dan komt het in je productiecluster zeker goed. Daar valt uiteraard wat voor te zeggen.

Om het geheel te demonstreren had Arjan een eenvoudig gedistribueerd programma gebouwd: Pigs in Space. Niet veel meer dan een veld waar ruimteschepen overheen vliegen met collision detection om te zorgen dat ze niet door elkaar heen vliegen. Met behulp van Hazelcast was het veld in sectoren opgesplitst en verdeeld over de diverse Pi’s. Aan de achtergrondkleur van de sector was af te lezen welke Pi de sector onder zijn hoede had.

Hoewel dit allemaal geen rocket-science lijkt, is het wel een hele goede opzet om basale problemen van gedistribueerd programmeren duidelijk te maken. Zo was al snel te zien dat op de grenzen van de sectoren, waar de ruimteschepen van de ene Pi naar de andere Pi overgingen, ruimteschepen vaak samenklonterden. Ook liet Arjan zien wat er gebeurde in geval van fail-over. Als hij een of meerdere Pi’s eruit trok, was duidelijk te zien dat het geheel even haperde en dat in eerste instantie de sectoren van de uitgevallen Pi’s wel snel werden overgenomen, maar niet eerlijk verdeeld werden onder de andere Pi’s. Dit evenwicht werd later hersteld. Ook was duidelijk te zien dat ruimteschepen in drukke sectoren langzamer vlogen. Een probleem dat zichzelf alleen maar versterkt, omdat ruimteschepen sneller zo’n sector in vliegen dan eruit.

Voor mij persoonlijk was de grootste eye-opener zijn demonstratie van het split-brain probleem. Hiervoor had hij afgedwongen dat de failover van elke Pi zich in het andere “datacenter” bevond. Een opzet die veel bedrijven in werkelijkheid ook gebruiken om de geografische risico’s te spreiden. Na een tijdje werd de connectie tussen de twee datacenters verbroken (split-brain). Zoals verwacht ging alles in principe gewoon door. Sectoren uit het andere datacenter werden overgenomen door de Pi’s in het overgebleven datacenter. Het interessante deel kwam echter toen de verbinding werd hersteld. Op dat moment waren er twee waarheden: de waarheid in het ene datacenter en de waarheid in het andere datacenter. Het gevolg was dat op beeld de ruimteschepen van hot naar her versprongen. Voor de Facebooks en de Amazons van deze wereld zijn dit serieuze problemen waarvoor een herstelstrategie bedacht moet worden: doe je een merge, kies je de ene waarheid boven de andere? In het geval van Amazon wist Arjan te vertellen dat ze in zo’n geval zo vriendelijk zijn om je twee shopping carts bij elkaar op te tellen: ze willen natuurlijk geen omzetverlies :)

Ondanks dat er maar beperkt code op het scherm te zien was, was dit toch een van de beste sessies van de dag. Een sessie die je aan het denken zet.

Wil je meer weten over PigsInSpace? Arjan heeft de source op GitHub gezet:
https://github.com/First8/pigsinspace


© 2019 Java Competence Network. All Rights Reserved.