1. 程式人生 > >Redis叢集簡介《Redis開發與運維讀書筆記》

Redis叢集簡介《Redis開發與運維讀書筆記》

Redis叢集

資料分佈

Redis採用雜湊分割槽規則,常見的雜湊分割槽規則如下: 1)節點取餘分割槽:hash(key)%N = key雖在的節點 2)一致性雜湊分割槽: 為系統的每個節點分配一個token,這些token組成一個hash環。資料讀寫執行節點查詢操作是先 hash(key) 然後順時針找到第一個大於改雜湊值的token節點。 好處:加減節點隻影響相鄰節點 壞處:加減節點部分無法命中尤其在資料量小時影響比較大,需要增加一倍或減少一半及誒單才能保證資料和負載的均衡。 3)虛擬槽分割槽。

虛擬槽分割槽

Redis叢集就是使用的這種虛擬槽分割槽,Redis叢集的槽範圍是0-16383(2的14次方=16384 )

  • 解耦資料和節點的關係,簡化擴容和收縮維度
  • 節點自身維護槽的迎合關係
  • 支援節點、槽、鍵之間的對映查詢,用於資料路由、線上伸縮等場景

叢集功能限制

  • key批量操作支援有限
  • key事物支援有限
  • 不能將大的鍵值物件如hash、list等對映到不同的節點
  • 不支援多資料庫,只支援 db0
  • 複製結構只支援一層,不支援樹形複製結構

節點通訊

Redis採用P2P的Gossip(留言)協議

Gossip協議原理: 節點間不斷通訊交換資訊,一段時間後所有節點都會知道叢集完整的資訊。

叢集伸縮

叢集伸縮 = 槽和資料在節點之間的移動

請求路由

在叢集模式下,Redis接收任何鍵相關命令首先計算鍵對應的槽,在根據槽找到對應的節點,如果節點是自身則執行命令,否則返回MOVED重定向錯誤,通知客戶端請求正確的節點。