[jbosscache-dev] Anycast: JBCACHE-813 & JGRP-338

Manik Surtani manik at jboss.org
Mon Nov 27 12:26:25 EST 2006


Bela/Vladimir:

Regarding broadcasting calls to a subset of members in a cluster, if  
I were to callRemoteMethods() to N members ( where N > 1 and N < all  
members) how does this behave, especially when using TCP or TCP_NIO?   
I know that with UDP, a multicast is made and the members not on the  
target list ignore the messages.  Is this the same with TCP/TCP_NIO,  
i.e., is the message broadcast to all members again and the members  
not on the target list ignore the messages?  (Hugely wasteful, and  
hence the need for anycast).

In JBoss Cache 1.4.1, I've implemented JBCACHE-813 so a unicast is  
used if the recipient list is 1 - a bit of a hack to work around this  
inefficiency.  But this in itself is not foolproof since, say using  
Buddy Replication in a cluster of 30 servers and using 3 buddies per  
node, we still end up unicasting the message to all 30 nodes only for  
27 of them to ignore it.

We could hack in a config param - a unicast threshold (UT) - where if  
N <= UT and N <= all members, we use a series of forced unicasts?   
The drawback is that this only makes sense with TCP/TCP_NIO.  Using  
this with UDP will probably result in worse performance since a  
single broadcast would be better.

Thoughts?
--
Manik Surtani

Lead, JBoss Cache
JBoss, a division of Red Hat

Email: manik at jboss.org
Telephone: +44 7786 702 706
MSN: manik at surtani.org
Yahoo/AIM/Skype: maniksurtani







More information about the jbosscache-dev mailing list