[infinispan-dev] Re: Distributed hashing - heterogenous nodes
Manik Surtani
manik at jboss.org
Tue Jul 7 08:16:04 EDT 2009
Hi Alex
Yeah the DIST code is pretty fledgling and a lot of it does need to be
sorted out. I hope to spend a lot of time on it this week.
Thanks for your willing to contribute a better CH impl. I agree with
your points below. Perhaps you could directly email me a patch which
I can look at?
Cheers
Manik
On 23 Jun 2009, at 19:47, Alex Kluge wrote:
>
> Hi,
>
> I have been working on a use of Jboss cache, which has a lot of
> overlap with the Infinispan project. I expect to be able to employ
> significant parts of this work in Infinispan as well. One point of
> overlap is the use of a consistent hash.
>
> I have looked at the
> org.infinispan.distribution.DefaultConsistentHash, and this is
> actually a simple hash, and not a consistent hash. Luckily I have a
> version of a consistent hash that can almost be dropped in here.
> There are a number of properties of a consistent hash that make it
> valuable for a distributed hash table.
>
> - If a server is removed, the number of keys that shift to a
> different
> bin (different server) is minimal.
> - The same key is always mapped to the same server.
> - If a server is added, the number of keys that shift is minimal.
>
> The current DefaultConsistentHash doesn't deliver on these. I hope
> you don't mind if I go into some details here.
>
> For example, the hash is sensitive to the order in which servers
> appear in the initial collection of caches. If one cache is built
> with a list of servers (S1, S2, S3), and another is built with a
> list (S3, S2, S1), keys will be mapped to different servers, even
> though the set of servers is actually the same.
>
> If one server is removed, many, or even all, keys will be shifted.
> For example one hash with the set of servers (S1, S2, S3) will map
> many keys to different servers than one with (S2, S3). In a true
> consistent hash, the keys originally mapped to S2 will remain mapped
> to S2, and those mapped to S3 will remain mapped to S3. The keys
> that were mapped to S1 will (depending on the exact implementation)
> will be divided between S1 and S2.
>
> There are a few differences, specifically, I work with arrays
> rather than collections – in part for performance, I also support
> weights for the servers, and the replication count is an instance
> variable rather than an argument to the locate method. How wedded
> are you to supplying the replication count as part of the locate
> method? Other than this, it looks like an adaptation of my
> implementation to Infinispan would be fairly painless, and I suggest
> replacing the current implementation with it.
>
> Alex Kluge
>
>
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org
More information about the infinispan-dev
mailing list