為什么需要一致性hash算法?
在緩存應(yīng)用層面,如何保證數(shù)據(jù)訪問的平橫性,單調(diào)性?
平橫性:主要是數(shù)據(jù)的平均分布,及當(dāng)集群中某一個緩存服務(wù)失效,數(shù)據(jù)也能夠正常分布
單調(diào)性:當(dāng)數(shù)據(jù)插入某個緩存之后,再次調(diào)用,同樣會落到對應(yīng)的緩存上面。
兩個算法比較:
consistent hashing:通常做法就是通過一個環(huán)狀來對緩存的key進行均橫分布,如果不能命中,查找相鄰節(jié)點。另外,通過虛擬結(jié)點部分解決
數(shù)據(jù)的平橫性問題(不能根本解決)。因為,節(jié)點如果失效較多,數(shù)據(jù)還是不均橫。
RendezvousHash:HRW,高可能隨機權(quán)重算法,這個算法的NB之處就在于解決了上面兩個問題。
看圖:
可以看出,完勝。
我們代碼中如何操作:
1 初始化
2 通過KEY取對應(yīng)的hash
3 與業(yè)務(wù)中的REDIS緩存實例進行映射
這樣,redis就可以橫向擴展了。
我的微信公眾號,歡迎溝通學(xué)習(xí)。
posted on 2016-03-02 18:36
alexcai 閱讀(3022)
評論(1) 編輯 收藏