Distributed Computing

From SlateWiki

There should at least be two ways for doing distributed computing. Depending on the task you want to solve either security or speed is more important. Slate will have a secure E (http://www.erights.org)-like concurrency and distribution mechanism. But when speed and ease-of-use is more important than security (e.g.: calculations running on a corporate network) Slate should allow for automatically distributing the execution of parallel code over a network without modification to the source. For this we need concurrency and distribution mechanism similar to what the next-generation scientific programming languages will give us (see Fortress, X10, Chapel).

Alternative Mechanisms

TupleSpaces

  • simplicity (less features is better)
  • safety and clarity
  • high performance

We do not need to (at least extensively) support:

  • security (mostly handled at a lower level)
  • mobility

The system could probably be based around a TupleSpaces provider-consumer model (basically, send: + listen:). Additionally, nodes can communicate tuples directly to each other using the sender ID of a tuple (utilizing the same methods). The listen-queues repeatedly report back to the TupleSpace how much data they need and have (some kind of usage statistics) so the TupleSpace can automatically balance load.