[Paper] Subject-oriented programming through RMI

Andrew P. Black apb at cse.ogi.edu
Wed Dec 29 17:34:09 UTC 1999


>  > What are Isis/Horus virtual synchrony protocols (and where can I find
>>  information on them).
>
>This page seems to be a good starting point for this:
>
>    http://www.cs.cornell.edu/Info/Projects/Ensemble/overview.html
>
>You can find the Horus home page from there, as well as links to interesting
>papers and FAQs.
>

That's a good answer to the second question.  To answer the first 
question:  they are a set of protocols for group communication, 
originally designed by Ken Birman at Cornell, but improved upon, at 
least in explanation, by Robbert van Rennesse, now also at Cornell.

Here is the way that I look at these protocols. Imagine that you have 
a group of objects on different machines, trying to keep themselves 
synchronized.  They are all members of the same Unix newsgroup, and 
every time one of them changes its state, it send a message to the 
group announcing the state change.

Why doesn't this work?  Well, the most obvious problem is that each 
object in the group sees the the messages in a different order!  So I 
might create a directory and then put a file in it, while you might 
see the creation of the file before the creation of the directory in 
which it is to live.  Or more simply, you might see the answer to an 
enquiry before the question.

Because the system is distributed, there is no single "right" order 
for the messages.  But the virtual synchrony protocols will guarantee 
that all of the objects see a message stream that respects the 
"happened before" relation seen by any of the objects.  That is, if 
any one object sees that A must have happened before B (e.g., because 
it received A and send B as a response) then that is the order that 
all objects will all see the messages in.

The other reasons that the objects don't stay in synch is that some 
of them crash and have to be restarted.  So the other thing that 
these protocols do is maintain a notion of group membership.  Objects 
can leave the group, and join the group.  The trick is that all of 
the other objects see these leave and join events, as messages, at 
the same place in the message stream, and that place "makes sense". 
So, after you have seen a message saying that I have left the group, 
you can be sure that you won't get any further messages from me.  And 
after you have seen a message saying that I have join the group, you 
can be sure that I will receive all of the messages that you send.

For more information, see the URL above.

	Andrew





More information about the Squeak-dev mailing list