<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-8898949683610477251.post8023602409631923584..comments</id><updated>2011-10-01T01:02:12.966+01:00</updated><category term='Mobile'/><category term='Query Languages'/><category term='Broadband'/><category term='Lucene'/><category term='Visualization'/><category term='MapReduce'/><category term='Cloud Computing'/><category term='Family'/><category term='Regular Expressions'/><category term='Web Services'/><category term='Music'/><category term='Hashing'/><category term='RPC'/><category term='Thrift'/><category term='Java'/><category term='Cloudera'/><category term='Open Source'/><category term='Testing'/><category term='Amazon Web Services'/><category term='Distributed Systems'/><category term='Amazon EC2'/><category term='Amazon S3'/><category term='Conferences'/><category term='Quantum Mechanics'/><category term='Data'/><category term='Whirr'/><category term='Hadoop'/><category term='HBase'/><category term='Hardware'/><category term='Apache'/><category term='Easter'/><category term='Book'/><category term='Serialization'/><title type='text'>Comments on Tom White: Consistent Hashing</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.lexemetech.com/feeds/8023602409631923584/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html'/><author><name>Tom White</name><uri>http://www.blogger.com/profile/02418758537880869494</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm2.static.flickr.com/1358/822201572_051b33f802_s.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-3817276543744178938</id><published>2011-07-08T08:05:32.733+01:00</published><updated>2011-07-08T08:05:32.733+01:00</updated><title type='text'>Hello. Thanks a lot to Tom for the article and to ...</title><content type='html'>Hello. Thanks a lot to Tom for the article and to John Cormie for finding the bug.&lt;br /&gt;There is a still another issue in the implementation that may result in not good distribution of keys between nodes. Particularly this code:&lt;br /&gt;&lt;br /&gt;for (int i = 0; i &amp;lt; numberOfReplicas; i++) {&lt;br /&gt;    circle.put(&lt;b&gt;hashFunction.hash(node.toString() + i&lt;/b&gt;),&lt;br /&gt;        node);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;In here, we take nodes&amp;#39;s string representation, append integer value and use the resultant &amp;quot;virtual node&amp;quot; as a parameter for hash function. The problem is that for nodes of numeric types (Long, Integer e.t.c) or any other types whose toString() method implementation returns string that ends with a number there is a &amp;quot;increased&amp;quot; probability for different nodes to be mapped to same postion on the circle.&lt;br /&gt;Let me explain by example. &lt;br /&gt;Assume we have 20 nodes which are represented by strings as &amp;quot;node1&amp;quot;, &amp;quot;node2&amp;quot;, &amp;quot;node3&amp;quot;, ..., &amp;quot;node19&amp;quot; and &amp;quot;node20&amp;quot;. And we use 100 replicas for each node. So following &amp;quot;virtual nodes&amp;quot; are generated by code above for &amp;quot;node1&amp;quot;:&lt;br /&gt;&lt;br /&gt;&amp;quot;node1&amp;quot; + 0 = &amp;quot;node10&amp;quot;&lt;br /&gt;...&lt;br /&gt;&lt;b&gt;&amp;quot;node1&amp;quot; + 10 = &amp;quot;node110&amp;quot;&lt;br /&gt;&amp;quot;node1&amp;quot; + 11 = &amp;quot;node111&amp;quot;&lt;br /&gt;&amp;quot;node1&amp;quot; + 12 = &amp;quot;node112&amp;quot;&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;&amp;quot;node1&amp;quot; + 99 = &amp;quot;node199&amp;quot;&lt;br /&gt;&lt;br /&gt;At the same time for &amp;quot;node11&amp;quot; we have:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;quot;node11&amp;quot; + 0 = &amp;quot;node110&amp;quot;&lt;br /&gt;&amp;quot;node11&amp;quot; + 1 = &amp;quot;node111&amp;quot;&lt;br /&gt;&amp;quot;node11&amp;quot; + 2 = &amp;quot;node112&amp;quot;&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;As you can see from text in bold, different combination of &amp;quot;node&amp;quot; and postfix resulted in same &amp;quot;virtual nodes&amp;quot; i.e collisions on circle. &lt;br /&gt;In our example 90 &amp;quot;virtual nodes&amp;quot; of &amp;quot;node1&amp;quot; will collide with &amp;quot;virtual nodes&amp;quot; of other nodes, with 10 nodes of each node from &amp;quot;node11&amp;quot; to &amp;quot;node19&amp;quot;.&lt;br /&gt;&lt;br /&gt;To solve this problem we can use some separator while generating &amp;quot;virtual node&amp;quot;:&lt;br /&gt;&lt;br /&gt;hashFunction.hash(node.toString() + &lt;b&gt;&amp;quot;:&amp;quot;&lt;/b&gt; + i&lt;br /&gt;&lt;br /&gt;With this we will have:&lt;br /&gt;&lt;br /&gt;&amp;quot;node1&amp;quot; + : + 10 = &lt;b&gt;&amp;quot;node1:10&amp;quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;quot;node11&amp;quot; + : + 1 = &lt;b&gt;&amp;quot;node11:0&amp;quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The nodes do not collide anymore.&lt;br /&gt;&lt;br /&gt;Also do not forget to use separator while removing node.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3817276543744178938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3817276543744178938'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1310108732733#c3817276543744178938' title=''/><author><name>Sergey Gussak</name><uri>http://www.blogger.com/profile/08927561387083438612</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-768725692'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-5741669268355884793</id><published>2011-01-03T09:50:42.796Z</published><updated>2011-01-03T09:50:42.796Z</updated><title type='text'>Wonderful though i missed the concept of ring in t...</title><content type='html'>Wonderful though i missed the concept of ring in the implementation</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/5741669268355884793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/5741669268355884793'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1294048242796#c5741669268355884793' title=''/><author><name>Monish</name><uri>http://www.blogger.com/profile/02157858458875485976</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1109142141'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-170719711451016264</id><published>2011-01-02T18:48:37.540Z</published><updated>2011-01-02T18:48:37.540Z</updated><title type='text'>Thanks so much for explaining the concept so clear...</title><content type='html'>Thanks so much for explaining the concept so clearly for us people not blessed with enough smarts to read a technical paper and understand lemmas, theorems, math to grasp a concept!&lt;br /&gt;&lt;br /&gt;May I request you to explain again in simple terms what vector clocks are?&lt;br /&gt;&lt;br /&gt;Thanks again</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/170719711451016264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/170719711451016264'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1293994117540#c170719711451016264' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1112630690'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-6607541574444880783</id><published>2010-02-26T02:51:14.943Z</published><updated>2010-02-26T02:51:14.943Z</updated><title type='text'>In response to John Cormie about the collisions:

...</title><content type='html'>In response to John Cormie about the collisions:&lt;br /&gt;&lt;br /&gt;All you need is a list of node as the value paired for the hash, in the circle,&lt;br /&gt;and a comparator for the nodes that cannot return 0.&lt;br /&gt;&lt;br /&gt;When 2 nodes collide to a same hash, put them both in the list, in ascending order. The &amp;quot;smaller&amp;quot; node is first and has precedence. When you remove a node, you make sure to remove the right one from the list and leave the other alone.&lt;br /&gt;&lt;br /&gt;This is a good time to drop the generics and us an object in the circle values (node vs single-linked-list of nodes), to save some memory.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/6607541574444880783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/6607541574444880783'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1267152674943#c6607541574444880783' title=''/><author><name>Danny</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-229220533'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-7215463307389243509</id><published>2009-09-19T03:19:44.453+01:00</published><updated>2009-09-19T03:19:44.453+01:00</updated><title type='text'>great article, and the japanese translation from m...</title><content type='html'>great article, and the japanese translation from morrita is cool!!!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/7215463307389243509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/7215463307389243509'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1253326784453#c7215463307389243509' title=''/><author><name>chingju</name><uri>http://www.blogger.com/profile/02319823684371410986</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1025686407'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-5037717706928339672</id><published>2009-05-31T01:40:20.304+01:00</published><updated>2009-05-31T01:40:20.304+01:00</updated><title type='text'>I have written a small test app that tells me how ...</title><content type='html'>I have written a small test app that tells me how many nodes should be relocated in the event of a node addition, by comparing the same dataset over 2 hashsets.&lt;br /&gt;&lt;br /&gt;It consistently reports that nearly all nodes should be moved ... am I doing something wrong ?&lt;br /&gt;&lt;br /&gt;http://pastebin.com/f459047ef</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/5037717706928339672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/5037717706928339672'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1243730420304#c5037717706928339672' title=''/><author><name>Christophe</name><uri>http://www.blogger.com/profile/04047789008225551019</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-913980725'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-3647368248946053782</id><published>2009-01-31T21:51:00.000Z</published><updated>2009-01-31T21:51:00.000Z</updated><title type='text'>Nice explanation of consistent hashing, but there ...</title><content type='html'>Nice explanation of consistent hashing, but there is a subtle bug in the implementation. The problem is hash collisions. Suppose two different nodes x and y have replicas that hash to the same Integer key in "circle". The sequence of calls "add(x); add(y);" will clobber one of x's replicas, and a later call to remove(y) will clear y's replica from "circle" without restoring x's.&lt;BR/&gt;&lt;BR/&gt;One consequence of this bug is that as nodes come and go you may slowly lose replicas. A more serious consequence is that if two clients notice changes to the set of nodes in a different order (very possible in a distributed system), clients will no longer agree on the key to node mapping. For example, suppose nodes x and y have replicas that collide as above, and node x fails around the same time that new (replacement?) node y comes online. In response, suppose that ConsistentHash client A invokes add(y) ... remove(x) and that another client B does the same but in the reverse order. From now on, the set of keys corresponding to the clobbered replica will map to node y at B, while A will map them somewhere else.&lt;BR/&gt;&lt;BR/&gt;How likely are collisions? If we model hashing as a random function, expect a collision after only about 2^(32/2) = 65536 insertions with Integer sized keys (http://en.wikipedia.org/wiki/Birthday_paradox#Cast_as_a_collision_problem). If numberOfReplicas is set to the suggested 200 replicas per node, we expect a collision in a system with only 328 nodes.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3647368248946053782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3647368248946053782'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1233438660000#c3647368248946053782' title=''/><author><name>John Cormie</name><uri>http://www.blogger.com/profile/08624945931699192996</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1968117006'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-3357863028599908807</id><published>2008-07-29T04:53:00.000+01:00</published><updated>2008-07-29T04:53:00.000+01:00</updated><title type='text'>This site has talks lots about the cache with its ...</title><content type='html'>This site has talks lots about the cache with its advantages, thanks for the topic, it will lots of gain for to the visitors for this site.&lt;BR/&gt;&lt;BR/&gt;Naorei&lt;BR/&gt;==============================&lt;BR/&gt;http://community.widecircles.com</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3357863028599908807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3357863028599908807'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1217303580000#c3357863028599908807' title=''/><author><name>naorei</name><uri>http://www.blogger.com/profile/16593540948924945828</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-409810476'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-6711791340793548532</id><published>2008-01-03T20:37:00.000Z</published><updated>2008-01-03T20:37:00.000Z</updated><title type='text'>Hi. Do you have any clue of how to create an algor...</title><content type='html'>Hi. Do you have any clue of how to create an algorithm which tracks the history of joins/leves of members and delivers the same node for the same key if it previously looked it up. Perhaps I'm explaining this in bad terms but something like a (in memory or persistent) database in cojunction with a consistent hash.&lt;BR/&gt;&lt;BR/&gt;perhaps:&lt;BR/&gt;public Address getAddress(key)&lt;BR/&gt;{&lt;BR/&gt;if(lookedUpMap.containsKey(key))&lt;BR/&gt;{&lt;BR/&gt;   return (Address)lookedUpMap.get(key)&lt;BR/&gt;}&lt;BR/&gt;else&lt;BR/&gt;{&lt;BR/&gt;  Address a = get(key);&lt;BR/&gt;  lookedUpMap.put(key, a);&lt;BR/&gt;  return a;&lt;BR/&gt;}&lt;BR/&gt;}&lt;BR/&gt;&lt;BR/&gt;Then it is up to the client to check if the previously stored node is reachable at this very moment.&lt;BR/&gt;&lt;BR/&gt;An extension to this cache would be to return a Set which size is equal to the nr of replicas of each key/value.&lt;BR/&gt;&lt;BR/&gt;If a value is stored on two or more nodes then the possibilty for that at least one of the servers is up increases a lot. I'm building a distributed storage solution and the data cannnot be lost just because the cache "recalculates" the hash :)&lt;BR/&gt;&lt;BR/&gt;Ahhh enough already I will implement something like this :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/6711791340793548532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/6711791340793548532'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1199392620000#c6711791340793548532' title=''/><author><name>marcusherou</name><uri>http://www.blogger.com/profile/04583770009623026697</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://profile.ak.facebook.com/profile6/348/36/n665850086_9405.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1611302618'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-3303279841149491512</id><published>2007-12-25T09:37:00.000Z</published><updated>2007-12-25T09:37:00.000Z</updated><title type='text'>Cool! I'm as we speak creating a distributed cachi...</title><content type='html'>Cool! I'm as we speak creating a distributed caching and searching system which uses JGroups for membership. The biggest problem I faced was this exact thing. What to do on the member-joined/leaved events and for the system to be able to know at all times to which node to send what command :)&lt;BR/&gt;&lt;BR/&gt;The caching system is strictly following the Map (and SortedMap) interface and a bunch of implementations have been implemented. LFU, LRU, MRU, Diskbased B+Tree (jdbm), ehcache wrapper, memcached java client wrapper, hibernate support... &lt;BR/&gt;I like the Map interface since it is quite clean..&lt;BR/&gt;&lt;BR/&gt;The impl I'm working on now is a cache/persister which uses HDFS as persistance layer. See how that turns out. The line between a cache and a persistence engine is fine.&lt;BR/&gt;&lt;BR/&gt;And of course all caches must be searchable = My own indexer/searcher + Lucene free text index/search, ohh and all must be able to work in a distributed environment.. fuck it is a big task.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3303279841149491512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/3303279841149491512'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1198575420000#c3303279841149491512' title=''/><author><name>Marcus</name><uri>http://www.blogger.com/profile/04583770009623026697</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1611302618'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-8467255166891635177</id><published>2007-12-02T22:26:00.000Z</published><updated>2007-12-02T22:26:00.000Z</updated><title type='text'>morrita - Glad you enjoyed the post and thanks for...</title><content type='html'>morrita - Glad you enjoyed the post and thanks for the translation! Tom</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/8467255166891635177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/8467255166891635177'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1196634360000#c8467255166891635177' title=''/><author><name>Tom White</name><uri>http://www.blogger.com/profile/02418758537880869494</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm2.static.flickr.com/1358/822201572_051b33f802_s.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2080114506'/></entry><entry><id>tag:blogger.com,1999:blog-8898949683610477251.post-1069786641943117657</id><published>2007-12-01T06:06:00.000Z</published><updated>2007-12-01T06:06:00.000Z</updated><title type='text'>good article!&lt;br&gt;i've made Japanese translation fo...</title><content type='html'>good article!&lt;BR/&gt;i've made Japanese translation for your article. which is available at &lt;BR/&gt;http://www.hyuki.com/yukiwiki/wiki.cgi?ConsistentHashing .&lt;BR/&gt;if you have any trouble, please let me know.&lt;BR/&gt;thank you for your work.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/1069786641943117657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8898949683610477251/8023602409631923584/comments/default/1069786641943117657'/><link rel='alternate' type='text/html' href='http://www.lexemetech.com/2007/11/consistent-hashing.html?showComment=1196489160000#c1069786641943117657' title=''/><author><name>morrita</name><uri>http://www.blogger.com/profile/02243547846090828073</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.lexemetech.com/2007/11/consistent-hashing.html' ref='tag:blogger.com,1999:blog-8898949683610477251.post-8023602409631923584' source='http://www.blogger.com/feeds/8898949683610477251/posts/default/8023602409631923584' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1336241331'/></entry></feed>
