一致性雜湊演算法:
一致性雜湊演算法主要用來解決分布式的問題。我們定義乙個圓環(0-2^32-1)
我們根據一定的雜湊函式計算出資料的key然後利用hash結構儲存相應的val或這key-val,如果
出現了hash衝突我們可以採用鏈位址法或者線性探測法加以解決,我們可以保證最大效率的
查詢到這個key對應的資料。
q:但是問題來了,如果所有的可以不再乙個機器的記憶體上怎麼辦?
a:那我們就把不同機器的ip或者機器名字用hash函式計算出key分布在這個環上,這時候這些key
是不能有hash衝突的。然後資料的key沿著環順時針走第乙個遇到的機器key就是它所真正物理儲存
的機器。
q:這樣做有什麼好處,為什麼自己不再建立乙個雜湊函式把這些key在一次hash放入唯一的桶中?
a:如果這樣做那麼我們如果增加或者減少乙個memcached伺服器。是不是讓所有伺服器停一下,我重新
部署一下資料。但是如果我們用這種一致性的雜湊原則,那麼增加乙個伺服器只會影響這個伺服器的
key到之前伺服器key之間的資料部署,而且這種部署很簡單,全部放到這個伺服器不需要重新計算所有
資料。具有較好的容錯性和可擴充套件性。
q:那麼如果由於hash函式不合理,而且伺服器很少(2臺)我們的資料經過hash計算全都大概率命中了第乙個伺服器。那麼我們分布式處理資料有何意義?
a:那麼我們就開設虛擬節點在第一第二台機器ip後面加數字,竟可能使虛擬節點均勻分布在環上。
這樣能大概率的讓資料正態均勻分布。
分布式儲存與一致性雜湊
如果我們需要儲存qq號與個人資訊,建立起假設qq有10億使用者,並且每個使用者的個人資訊佔據了100m,如果要儲存這些資料,所需要的空間就得 100億 100m 10wt,這麼龐大的資料是不可能在單機環境下儲存的,只能採用分布式的方法,用多個機器進行儲存,但是即使使用多機,這些資料也至少要10w臺機...
分布式 一致性雜湊演算法
一致性雜湊演算法,作為分布式計算的資料分配參考,比傳統的取模,劃段都好很多 傳統雜湊取模,在資料需要遷移時代價巨大,因此需要優化。一致性雜湊 將雜湊值看作乙個環,順時針將雜湊值接近節點的物件存到對應節點,通過這種演算法做資料分布,在增減節點的時候,可以大大減少資料的遷移規模。此時,可能會出現乙個問題...
分布式一致性雜湊分析
現在實際應用中,我們使用redis作為我們的快取伺服器,假如現在我們的使用三颱redis伺服器用來作為快取 redis01,redis02,redis03 現在我們需要把我們的資料均勻的存放到三個redis伺服器上 對於redis伺服器來說,並沒有實現分布式集群,所謂的redis的分布式集群是指由客...