[Twisted-Python] clustering or process group replication

Laran Evans lc278 at cornell.edu
Fri May 27 23:44:31 EDT 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