[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
|