Thread overview
Tango Compute Grid
Jun 27, 2007
Lars Ivar Igesund
Jun 27, 2007
Robert Fraser
Jun 27, 2007
Sean Kelly
Jun 28, 2007
Robert Fraser
June 27, 2007
Dear D community

Tango has an optional package for enabling high-performance clustered designs. The package supports distributed instances of cache, queue, and task (rmi/rpc). All activity on a cluster operates via a named 'channel', akin to a publish/subscribe channel i.e. once a channel is opened, cluster operations can be performed upon it. Channels are often named based upon the content flowing through them. For example, a common idiom is to use the name of a class, and retain that channel purely for appropriate serialized instances.

Data held within a cache is temporal, and the content is spread out across the cluster using a DHT (distributed hash table) approach. Queue instances are distributed in a similar manner, and are persisted to disk. Execution of task/rpc is generally synchronous, though queues can be used to house asynchronous task execution where a decoupled design is more suitable. Either way, task execution is spread across the cluster in a manner akin to queuing.

Throughput is far beyond any other similar approach known to us, and the consistent interface across each of queue/cache/task makes the design simple to use. We expect to make this functionality available in the next release of Tango.

Contact:
http://www.dsource.org/projects/tango/wiki/Contact

Signed,

The Tango Team

http://www.dsource.org/projects/tango/wiki/Contributors

----

Tango is a D library providing a cohesive runtime and library for the D programming language. A feature list can be found on http://www.dsource.org/projects/tango/wiki/Features
June 27, 2007
Not directly related, but is there a (lighter-weight, memory-only, not distributed) queuing mechanism in Tango that allows intra-process communication through an asynchronous thread pooling mechanism? That is, one thread can place events in a queue that are handled by another thread pool when it gets to them, like a lightweight SEDA implementation?

Lars Ivar Igesund Wrote:

> Dear D community
> 
> Tango has an optional package for enabling high-performance clustered designs. The package supports distributed instances of cache, queue, and task (rmi/rpc). All activity on a cluster operates via a named 'channel', akin to a publish/subscribe channel i.e. once a channel is opened, cluster operations can be performed upon it. Channels are often named based upon the content flowing through them. For example, a common idiom is to use the name of a class, and retain that channel purely for appropriate serialized instances.
> 
> Data held within a cache is temporal, and the content is spread out across the cluster using a DHT (distributed hash table) approach. Queue instances are distributed in a similar manner, and are persisted to disk. Execution of task/rpc is generally synchronous, though queues can be used to house asynchronous task execution where a decoupled design is more suitable. Either way, task execution is spread across the cluster in a manner akin to queuing.
> 
> Throughput is far beyond any other similar approach known to us, and the consistent interface across each of queue/cache/task makes the design simple to use. We expect to make this functionality available in the next release of Tango.
> 
> Contact:
> http://www.dsource.org/projects/tango/wiki/Contact
> 
> Signed,
> 
> The Tango Team
> 
> http://www.dsource.org/projects/tango/wiki/Contributors
> 
> ----
> 
> Tango is a D library providing a cohesive runtime and library for the D programming language. A feature list can be found on http://www.dsource.org/projects/tango/wiki/Features

June 27, 2007
Robert Fraser wrote:
> Not directly related, but is there a (lighter-weight, memory-only, not distributed) queuing mechanism in Tango that allows intra-process communication through an asynchronous thread pooling mechanism? That is, one thread can place events in a queue that are handled by another thread pool when it gets to them, like a lightweight SEDA implementation?

Not currently, though the grid tech could be used as a somewhat heavyweight version of that.  That said, I had the same thought when all of this was introduced to me, so expect something along those lines in Tango eventually.


Sean
June 28, 2007
Awesome! Thanks to you & the Tango team for all your hard work!

Sean Kelly Wrote:

> Robert Fraser wrote:
> > Not directly related, but is there a (lighter-weight, memory-only, not distributed) queuing mechanism in Tango that allows intra-process communication through an asynchronous thread pooling mechanism? That is, one thread can place events in a queue that are handled by another thread pool when it gets to them, like a lightweight SEDA implementation?
> 
> Not currently, though the grid tech could be used as a somewhat heavyweight version of that.  That said, I had the same thought when all of this was introduced to me, so expect something along those lines in Tango eventually.
> 
> 
> Sean