1. 程式人生 > >第一幕數據分片與路由

第一幕數據分片與路由

兩層 多條 結束 分布式 物料 相關 正常 哈希表 實現

---恢復內容開始---

一、數據分片相關:

數據分片:系統水平擴展。數據分片存的各個機器上

數據復制:保證數據的高可用性,保證讀操作的效率,客服端從多個備份數據中選擇物理距離較近的讀取,提高單次讀取效率

數據路由:分片後找到某條記錄的存儲位置

缺點:數據一致性

二、數據分片和路由的抽象模型

二級映射:

1、key - partation:數據分到數據分片,1對多:一個分片包涵多條數據

2、partation--machine:數據分片到物理機中,1對多:一個物理機包涵多個分片

路由:獲得某條記錄的值,先通過k-p找到數據分片,再通過p-m找到對應的machine,通過key找到對應的value

數據分片類型:

  • 哈希分片:k-p,支持點查詢,大多的KV存儲系統支持這種
  • 範圍分片:點查詢和範圍查詢

三、哈希分片(Hash Partition)方法

1、Round Robin:

  H(key) = hash(key)mod(K),表示:物理機k個,以key為主鍵的某條記錄所在的機器。

優點:簡單

缺點:缺乏靈活性,新增物理機時,之前的物理機之間的映射關系被打亂。需要重新分配

原因:將k-p,p-m兩個映射合為一體,由同一個哈希函數決定;k作為參數,造成機器個數與映射函數造成緊耦合。

2、虛擬桶:兩層映射

  k-p:數據通過哈希函數映射到虛擬桶,1對多,一個虛擬桶存多條記錄

  p-m:虛擬桶通過查表方式映射到物理機,1對多,一個機器存多個桶

優點:擴展靈活。將數據之間映射到機器,解耦成兩級映射

新增機器時,p-m的表只需修改個別條目

3、一致性哈希:

  分布式哈希表(DHT)是一種技術概念,實現有多種,比如Chord(和弦)系統中提出的一致性哈希算法。

  一致性哈希算法:將哈希數值空間按照大小組成收尾相連的環,每臺機器映射到哈希值上,這臺機器負責落在一段有序哈希值範圍的數據。同時機器記錄環中的先驅和後繼節點,使之成為有向環。

 路由問題:

  1. 低效率的方法:根據key的hash判斷是否是本節點管轄範圍,若是返回value,不是就轉給其他節點繼續查找,循環。

   2. 高效方法:每個節點配置存儲m條路由信息的路由表,第i項表示距離當前節點2^i的哈希空間節點。設計三個節點Np(前驅)、Nc(當前)、Ns(後繼)。

該算法有兩個步驟:

1、c< j <= s,key在C的範圍內,返回值

2、不在,找路由表,找到比j小的最大編號節點Nh,讓Nh去找,(j > c + 2^i,i對應的節點h)遞歸進行這兩部.

1)當新增節點情況:

Nnew節點先指向Nx(網絡中的節點),根據路由算法查詢Nnew對應的H(Nnew) = new,找到new的後繼ns,ns的前驅是np.

第一:改變np,nnew,ns直接的映射關系,構建新網絡(需要穩定性檢查)

第二:將ns上的小於new的遷移到new上

2)穩定性檢查,對Nc進行檢查,

  • 假設ns為nc的後繼,nc向ns詢問ns的前驅np,答復分四部,
  • 如果 s<p<c,則告訴nc,p就是c的後繼
  • 條件不滿足,設nx為當前的後繼節點。nx <-- null 或者 x < c <p,則告訴c,x是c的後繼
  • 數據遷移到nc上

3)當nc離開網絡時,正常離開和異常離開,都只影響後繼節點的數據

  • 正常離開:通知相應的節點,更新前驅和後繼,將本身的數據遷出到後繼接單,更新其他機器路由表。
  • 異常離開:機器故障,可通過主備份機器獲得

一致性哈希算法缺點:機器節點位置隨機,導致負載不均衡。將所有機器視為均等,造成低配置高負載。

4、虛擬節點:將物料節虛擬成若幹虛擬節點,分別映射到環狀結構的不同位置。使得負載更加,兼顧機器異質性問題

四、範圍分片:

主鍵排序,劃分分片,保存分片的映射表,記錄最小主鍵和對應的物理機地址。物理機的管理LSM樹。

---恢復內容結束---

一、數據分片相關:

數據分片:系統水平擴展。數據分片存的各個機器上

數據復制:保證數據的高可用性,保證讀操作的效率,客服端從多個備份數據中選擇物理距離較近的讀取,提高單次讀取效率

數據路由:分片後找到某條記錄的存儲位置

缺點:數據一致性

二、數據分片和路由的抽象模型

二級映射:

1、key - partation:數據分到數據分片,1對多:一個分片包涵多條數據

2、partation--machine:數據分片到物理機中,1對多:一個物理機包涵多個分片

路由:獲得某條記錄的值,先通過k-p找到數據分片,再通過p-m找到對應的machine,通過key找到對應的value

數據分片類型:

  • 哈希分片:k-p,支持點查詢,大多的KV存儲系統支持這種
  • 範圍分片:點查詢和範圍查詢

三、哈希分片(Hash Partition)方法

1、Round Robin:

  H(key) = hash(key)mod(K),表示:物理機k個,以key為主鍵的某條記錄所在的機器。

優點:簡單

缺點:缺乏靈活性,新增物理機時,之前的物理機之間的映射關系被打亂。需要重新分配

原因:將k-p,p-m兩個映射合為一體,由同一個哈希函數決定;k作為參數,造成機器個數與映射函數造成緊耦合。

2、虛擬桶:兩層映射

  k-p:數據通過哈希函數映射到虛擬桶,1對多,一個虛擬桶存多條記錄

  p-m:虛擬桶通過查表方式映射到物理機,1對多,一個機器存多個桶

優點:擴展靈活。將數據之間映射到機器,解耦成兩級映射

新增機器時,p-m的表只需修改個別條目

3、

第一幕數據分片與路由