This is Archipelago, a distributed computing toolkit for ruby.

It consists of several different parts, that can be used standalone or in conjunction.

Dependencies:

Archipelago::Hashish::BerkeleyHashishProvider

ruby bdb: moulon.inra.fr/ruby/bdb.html

Sub packages:

Archipelago::Disco

A UDP multicast discovery service useful to find services in your network with a minimum of configuration.

Archipelago::Tranny

A distributed transaction manager inspired by the jini service mahalo.

Archipelago::Current

A tiny concurrency toolkit used in various parts of Archipelago

Archipelago::Hashish

A hash-like tool that provides transparent persistence.

Archipelago::Treasure

A distributed object database where the objects never leave the database, instead you do your operations upon references to the objects. It has support for serializably isolated transactions with optimistic concurrency control using Archipelago::Tranny or any transaction manager with similar semantics.

Archipelago::Pirate

A client tool to allocate Archipelago::Treasure::Chests for different keys and act like an almost normal local Hash for providing distributed and scaleable object database facilities to any ruby application.

Examples:

To build a ruby gem from these sources do ‘rake gem’. The gem will be placed within the pkg/ directory.

To set up an Archipelago::Tranny::Manager do the following (from scripts/tranny.rb):

:include:script/tranny.rb

To set up an Archipelago::Treasure::Chest do the following (from scripts/chest.rb):

:include:script/chest.rb

To set up an Archipelago::Pirate::Captain do the following (from scripts/pirate.rb):

:include:script/pirate.rb

To set up a test environment to play around with, run the following commands in a few terminals:

  • script/tranny.rb /tmp/tranny

  • script/chest.rb /tmp/chest1

  • script/chest.rb /tmp/chest2

  • script/console