淺析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等都有采用過,所以將這兩種哈希算法吃透,可謂是如虎添翼。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM