# Difference between Distributed ruby and Rinda

**URL:** <https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272>\
**Category:** Ruby\
**Created:** [August 29, 2007, 1:48pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272 "2007-08-29T13:48:34Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 29, 2007, 1:48pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/1 "2007-08-29T13:48:34Z")

</div>

Can anyone tell me the difference between Distributed ruby and rinda?

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 30, 2007, 3:20pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/2 "2007-08-30T15:20:28Z")

</div>

On Aug 29, 7:48 am, Hema L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ## Can anyone tell me the difference between Distributed ruby and rinda?
> 
> Posted viahttp://www.ruby-forum.com/.

Rinda uses Distributed Ruby (DRb) in its Tuplespace implementation.  
That being said, you can use DRb without using Rinda. I view DRb as  
similar to many other languages’ remoting frameworks; Corba, JINI,  
Httpinvoker, etc. The main advantage is that DRb has a lower barrier  
to entry.

I have no experience with other tuplespace implementations but I’ve  
heard it was originally based off a java project called Linda.  
Playing around with Rinda actually helped me in understanding Erlang’s  
process ‘mail boxes’, which I find quite similar.

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 30, 2007, 3:30pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/3 "2007-08-30T15:30:29Z")

</div>

On 8/30/07, removed\_email\_address@domain.invalid [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> I have no experience with other tuplespace implementations but I’ve  
> heard it was originally based off a java project called Linda.  
> Playing around with Rinda actually helped me in understanding Erlang’s  
> process ‘mail boxes’, which I find quite similar.

Linda and Lindaspaces long predate Java. There’s actually a rigorous and  
sophisticated mathematical foundation for them, and a long history of  
pre-Java implementations, including some of my own from perhaps a dozen  
years ago.

If you’re interested in Erlang-like “spawned processes” for Ruby, they  
were  
just added to EventMachine. Sync to the head revision and look at the  
test  
cases. As soon as they get a few more features and documentation,  
they’ll be  
released. There’s also some recent discussion of them on the  
EventMachine  
mailing list.

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 30, 2007, 4:01pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/4 "2007-08-30T16:01:35Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Francis C. wrote:

> If you’re interested in Erlang-like “spawned processes” for Ruby, they were  
> just added to EventMachine. Sync to the head revision and look at the test  
> cases. As soon as they get a few more features and documentation, they’ll be  
> released. There’s also some recent discussion of them on the EventMachine  
> mailing list.

Thank you from the bottom of my heart for this!! Just out of curiosity,  
are you going to present this at a Ruby conference in the near future??

-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.7 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFG1s2I8fKMegVjSM8RAgwwAJ428XDbCnrzvXb341Z+J+Lya28MCgCeMT5V  
3racDJ523a71WuWQNiiJ+jQ=  
=d/6/  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 31, 2007, 5:19am UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/5 "2007-08-31T05:19:25Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Francis C. wrote:

> > > mailing list.  
> > > Thank you from the bottom of my heart for this!! Just out of curiosity,  
> > > are you going to present this at a Ruby conference in the near future??
> 
> The most interesting feature (being able to send messages to “spawned  
> processes” that are resident in other O/S processes or on other machines)  
> isn’t done yet. I’m not that thrilled with how Erlang does it, by the way  
> (IP addresses and ranges of well-known ports) but I haven’t thought of  
> anything better.

Well … you need something that’s OS-agnostic and network agnostic,  
which pretty much ties you to something “universal” like TCP/IP,  
sockets, ports, etc. I don’t know much about Windows or MacOS, but I’m  
reasonably sure this stuff is about as efficient as it can be on Linux  
and Solaris, and it’s _so_ tunable. 🙂 Are there any “parallel  
network-connected clustering” techniques that _don’t_ depend on TCP/IP?

> Presenting this somewhere would be fun… 😉

I’m sure MountainWest RubyConf next spring would love to have you. 🙂

> 

-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.7 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFG14iY8fKMegVjSM8RAts5AKDcNEuP6fb4FzxRG4k5Ie12/TLZJQCfSPXD  
i9CB/pftDu+Ts31Xkxk9UoI=  
=EX3d  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 30, 2007, 4:14pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/6 "2007-08-30T16:14:36Z")

</div>

On 8/30/07, M. Edward (Ed) Borasky [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > mailing list.
> 
> Thank you from the bottom of my heart for this!! Just out of curiosity,  
> are you going to present this at a Ruby conference in the near future??

The most interesting feature (being able to send messages to “spawned  
processes” that are resident in other O/S processes or on other  
machines)  
isn’t done yet. I’m not that thrilled with how Erlang does it, by the  
way  
(IP addresses and ranges of well-known ports) but I haven’t thought of  
anything better. DNS service records, maybe?

Presenting this somewhere would be fun… 😉

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 31, 2007, 8:49am UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/7 "2007-08-31T08:49:39Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Francis C. wrote:

> Oh it’ll be TCP, all right. I was just thinking of the way that Erlang uses  
> to specify PIDs, with strings containing embedded machine identifiers. But  
> we know that the Erlang way works, because Ericsson supposedly has  
> distributed applications with literally millions of distributed processes.

And just look at some of the options the Linux kernel (2.6.22) provides  
just for congestion control and quality of service:

```
--- TCP: advanced congestion control
<M> Binary Increase Congestion (BIC) control
<*> CUBIC TCP
<M> TCP Westwood+
<M> H-TCP
<M> High Speed TCP
<M> TCP-Hybla congestion control algorithm
<M> TCP Vegas
<M> Scalable TCP
<M> TCP Low Priority
<M> TCP Veno
      Default TCP congestion control (Cubic) --->

[*] QoS and/or fair queueing
      Packet scheduler clock source (CPU cycle counter) --->
--- Queueing/Scheduling
<M> Class Based Queueing (CBQ)
<M> Hierarchical Token Bucket (HTB)
<M> Hierarchical Fair Service Curve (HFSC)
<M> ATM Virtual Circuits (ATM)
<M> Multi Band Priority Queueing (PRIO)
<M> Random Early Detection (RED)
<M> Stochastic Fairness Queueing (SFQ)
<M> True Link Equalizer (TEQL)
<M> Token Bucket Filter (TBF)
<M> Generic Random Early Detection (GRED)

<M> Differentiated Services marker (DSMARK)
<M> Network emulator (NETEM)
<M> Ingress Qdisc
--- Classification
<M> Elementary classification (BASIC)
<M> Traffic-Control Index (TCINDEX)
<M> Routing decision (ROUTE)
<M> Netfilter mark (FW)
<M> Universal 32bit comparisons w/ hashing (U32)
[*] Performance counters support
[*] Netfilter marks support
<M> IPv4 Resource Reservation Protocol (RSVP)
<M> IPv6 Resource Reservation Protocol (RSVP6)
[*] Extended Matches
(32) Stack size
<M> Simple packet data comparison
<M> Multi byte comparison
<M> U32 key
<M> Metadata
<M> Textsearch
[*] Actions
<M> Traffic Policing
<M> Generic actions
[*] Probability support
<M> Redirecting and Mirroring
<M> IPtables targets
<M> Packet Editing
< > Simple Example (Debug)
[*] Incoming device classification
--- Rate estimator

```

Someone insanely geekier than I am ought to be able to squeeze all the  
delays out of this given all those options.

-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.7 (GNU/Linux)  
Comment: Using GnuPG with Mozilla - [http://enigmail.mozdev.org](http://enigmail.mozdev.org)

iD8DBQFG17mk8fKMegVjSM8RAj70AKCfmPwQvUTyeMi0htTHEuMJtmMJ0gCgnpD/  
KlxrySZiAbULCn5ezNlgbVY=  
=WYh9  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [August 31, 2007, 5:58am UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/8 "2007-08-31T05:58:27Z")

</div>

On 8/30/07, M. Edward (Ed) Borasky [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Well … you need something that’s OS-agnostic and network agnostic,  
> which pretty much ties you to something “universal” like TCP/IP,  
> sockets, ports, etc. I don’t know much about Windows or MacOS, but I’m  
> reasonably sure this stuff is about as efficient as it can be on Linux  
> and Solaris, and it’s _so_ tunable. 🙂 Are there any “parallel  
> network-connected clustering” techniques that _don’t_ depend on TCP/IP?

Oh it’ll be TCP, all right. I was just thinking of the way that Erlang  
uses  
to specify PIDs, with strings containing embedded machine identifiers.  
But  
we know that the Erlang way works, because Ericsson supposedly has  
distributed applications with literally millions of distributed  
processes.

---

<div class="post-metadata">

**Author:** ![hemalatha](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/dfb087/32.png) [@hemalatha](https://www.ruby-forum.com/u/hemalatha)\
**Post date:** [October 7, 2007, 5:15pm UTC](https://www.ruby-forum.com/t/difference-between-distributed-ruby-and-rinda/113272/9 "2007-10-07T17:15:01Z")

</div>

On 30 Aug 2007, at 15:14, Francis C. wrote:

> The most interesting feature (being able to send messages to “spawned  
> processes” that are resident in other O/S processes or on other  
> machines)  
> isn’t done yet. I’m not that thrilled with how Erlang does it, by  
> the way  
> (IP addresses and ranges of well-known ports) but I haven’t thought of  
> anything better. DNS service records, maybe?

You might like to take a look at DNS NAPTR records. They’re not  
exactly well supported yet outside of ENUM projects, but they have  
lots of flexibility that you might find useful.

At some point in the non-too-distant future I even hope to publish a  
decent Ruby library for handling them as part of my RINDR DNS server  
project.

Ellie

## Eleanor McHugh Games With Brains

raise ArgumentError unless @reality.responds\_to? :reason
