[Twisted-Python] clustering or process group replication
Laran Evans
lc278 at cornell.edu
Fri May 27 21:44:31 MDT 2005
Ian Duggan wrote:
> I just took a peek at JGroups. It looks like their API includes a lot of
> switches you can tweak. Would that be a good starting point? It looks like
> it's used in some significant stuff.
>
> http://www.jgroups.org/javagroupsnew/docs/success.html
>
> Their overview page (http://www.jgroups.org/javagroupsnew/docs/overview.html)
> makes a decent case for their approach. I wonder if doing a mixin/layered
> approach to building protocols adds much overhead?
There is a paper out there that makes the statement that each layer you
add to a system adds 10% overhead. So, by that rationale, stacking
protocols is scalable only to a certain point. But, what that paper's
really referring to is adding a programming language on top of the
underlying hardware adds 10%, which is pretty silly because, yeah, you
have to add overhead to provide a whole new set of capabilities. But
without the capabilities provided by the programming language, your
underlying hardware wouldn't be worth much.
So, I don't think layering protocols adds much overhead at all. But
there are better ways and not so good ways to do it. And I'm not a huge
fan of the way JGroups and in fact Horus and Ensemble do it, basically
the lego block approach because a given layer can only be stacked on top
or below certain other layers. You can't just stack anything on top of
anything else. So, there's a certain learning curve involved in
understanding how the layers interact.
I think a better approach is a more functional approach, utility methods
for things like splitting and joining buffers, sequencing, sending via
various types of sockets etc. There is actually another paper out there
which talks about this. Here's a link to it:
http://portal.acm.org/citation.cfm?doid=323647.323645. I found this
paper very helpful.
JGroups has numerous configurations out of the box, all of which can be
found in the conf directory of the JGroups source from CVS.
One of the difficult things about JGroups in my opinion is that there
are so many different configuration possibilities. It's a bit difficult
to know exactly what to use. Though, for some I'm sure that flexibility
is a nice "feature". All personal taste I suppose.
> As for the others, I would need to read more about them. Do you know of any
> sort of comparison matrix that includes these projects? Ensemble is work that
> happened after Horus, right? Does that means it's more complete/featureful
> and should be considered over Horus? Ie, has Horus added new things since
> they split?
To specifically understand Horus vs. Ensemble, read this:
http://dsl.cs.technion.ac.il/projects/Ensemble/overview.html
There is a good paper which compares a number of the major group
communication toolkits available. Here's a link:
http://portal.acm.org/citation.cfm?doid=503112.503113
There's another paper which I believe is similar. Though I haven't yet
had a chance to read it. Here's a link to that one:
http://portal.acm.org/citation.cfm?doid=1041680.1041682
Hope this all helps.
- Laran
More information about the Twisted-Python
mailing list