17.數據分佈算法:hash + 一致性hash + redis cluster的hash slot

講解分佈式數據存儲的核心算法,數據分佈的算法

hash算法 -> 一致性hash算法(memcached) -> redis cluster hash slot算法

用不同的算法,就決定了在多個master節點的時候,數據如何分佈到這些節點上去,解決這個問題

redis cluster介紹

redis cluster

  1. 自動將數據進行分片,每個master上放一部分數據
  2. 提供內置的高可用支持,部分master不可用時,還是可以繼續工作的
  3. redis cluster架構下,每個redis要放開兩個端口號,比如一個是6379,另外一個就是加10000的端口號,比如16379
  4. 16379端口號是用來進行節點間通信的,也就是cluster bus -- 集羣總線

cluster bus通信,用來進行故障檢測,配置更新,故障轉移授權

  1. cluster bus用了另外一種二進制的協議,主要用於節點間進行高效的數據交換,佔用更少的網絡帶寬和處理時間

三大數據分佈算法

最老土的hash算法和弊端(大量緩存重建)

在這裏插入圖片描述

一致性hash算法(自動緩存遷移)+虛擬節點(自動負載均衡)

在這裏插入圖片描述

熱點問題–虛擬節點負載均衡

在這裏插入圖片描述

redis cluster的hash slot算法

在這裏插入圖片描述

  1. redis cluster有固定的16384個hash slot,對每個key計算CRC16值,然後對16384取模,可以獲取key對應的hash slot
  2. redis cluster中每個master都會持有部分slot,比如有3個master,那麼可能每個master持有5000多個hash slot
  3. hash slot讓node的增加和移除很簡單,增加一個master,就將其他master的hash slot移動部分過去,減少一個master,就將它的hash slot移動到其他master上去
  4. 移動hash slot的成本是非常低的
  5. 客戶端的api,可以對指定的數據,讓他們走同一個hash slot,通過hash tag來實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章