淺析ketamahash和murmurhash

說來趕巧,之前我有16個redis集羣,然後我要將某個key根據路由規則存到16個集羣中的某一個上面,正巧用到了這兩種哈希算法,改造完畢上線後,整體帶來的效果也十分理想。

說道ketamahash,它是一致性哈希算法,一般說來都是由若干固定的虛擬節點來計算出每個虛擬節點的slots,數據存儲的時候,算出key的slot值,然後存入相鄰最近的虛擬節點。而murmurhash則是散列算法,由於其計算產生的結果足夠劇烈,所以是目前最好的幾種散列算法之一。它主要用來計算出key的slot值的。有人會問,java中的hashcode也能計算出來呀,但是hashcode計算出來的值的劇烈程度遠遠比不上murmurhash。拿abc和abd來說,hashcode計算出來的差值相差不大,但是murmurhash計算出來的差值則相差甚遠。

二者結合,可以實現出類似redis cluster使用的路由算法,且效果也是很好的。目前已知的開源中,jedis,memcache,redis等都有采用過,所以將這兩種哈希算法吃透,可謂是如虎添翼。

學東西不要急躁,要慢,要注重質量,網絡上看的,源碼中讀的,都屬於紙上得來終覺淺的東西,一定要自己寫,寫完後還能寫成文章講述出來,這樣,你才能算是真正的吃透了。切忌看過一點源碼就高談闊論,殊不知如同浮沙築高臺,經不起推敲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章