第一幕數據分片與路由
---恢復內容開始---
一、數據分片相關:
數據分片:系統水平擴展。數據分片存的各個機器上
數據復制:保證數據的高可用性,保證讀操作的效率,客服端從多個備份數據中選擇物理距離較近的讀取,提高單次讀取效率
數據路由:分片後找到某條記錄的存儲位置
缺點:數據一致性
二、數據分片和路由的抽象模型
二級映射:
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(和弦)系統中提出的一致性哈希算法。
一致性哈希算法:將哈希數值空間按照大小組成收尾相連的環,每臺機器映射到哈希值上,這臺機器負責落在一段有序哈希值範圍的數據。同時機器記錄環中的先驅和後繼節點,使之成為有向環。
路由問題:
- 低效率的方法:根據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、
第一幕數據分片與路由