Äntligen har jag lyckats få till en distribuerad lösning som garanterar(gulp) att alla noder i klustret har samma data under varje ögonblick. En server får agera master och måste således vara uppe hela tiden för att det ska fungera och det är den största svagheten i denna design både skalbarhetsmässigt och HA mässigt. Detta kommer jag att bygga bort med tiden men man måste inskränka komplexiteten till en hanterbar mängd initialt. Den lösning som jag siktar på att implementera är denna:
- Notifiera den äldsta mastern att jag finns och vill ha state
- Hämta state tills varje ny state batch tar X tid att hämta dvs lagtiden är X
- Säg till mastern att låsa klustret
- Hämta den sista batchen och säg till mastern att jag är klar
- Meddela alla slavar att jag nu också finns med som master.
- Säg åt mastern att låsa upp klustret
Själva låset på klustret måste vara otroligt kort < 30 sek, annars tror jag att det kommer hända konstiga saker för användarna, applikationsservrar etc.
Cachen finns i subversion och heter SymmetricJgroupsCacheStrategy. Enklaste sättet att se hur man använder den är att titta i Testcaset PlainCacheTest och kolla hur metoden “testDistributedDisk” är uppbyggd.
|
 |
Etiketter:
cache,
distributed,
symmetric
12 months ago , torsdag, januari 10th, 2008
Postad i cache
Feed för det här inlägget
Lämna svar
trackback