一致性哈希算法

工程設計中常用服務器集羣來設計和實現數據緩存,以下是常見的策略:

  1. 無論是添加、查詢還是刪除數據,都先將數據的id通過哈希函數轉換成一個哈希值,記爲key
  2. 如果目前機器有N臺,則計算key%N值,這個值就是該數據所屬的的機器編號,無論是添加、刪除還是查詢操作,都只在這臺機器上進行

請分析這種緩存策略可能帶來的問題,並提出改進的方案

普通Hash算法

緩存策略的潛在問題是如果增加或刪除機器時(N變化)代價會很高,所有的數據都不得不根據id重新計算一遍哈希值,並將哈希值對新的機器數進行取模操作,然後進行大規模的數據遷移

爲了解決這些問題,引入一致性哈希算法。假設數據的id通過哈希函數轉換成的哈希值範圍是2322^{32}2

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