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.
-- Jecel
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
squeak-dev@lists.squeakfoundation.org