1. 程式人生 > >《大數據日知錄》讀書筆記-ch1數據分片與路由

《大數據日知錄》讀書筆記-ch1數據分片與路由

lsp 負載不均 圖片 obi 縱向擴展 數據庫 b+樹 ash padding

目前主流大數據存儲使用橫向擴展(scale out)而非傳統數據庫縱向擴展(scale up)的方式。因此涉及數據分片、數據路由(routing)、數據一致性問題

技術分享圖片

二級映射關系:key-partition映射,partition-machine映射

首先找到partition(比如hash),然後找machine(路由routing)

技術分享圖片

hash分片方式1:Round Robin

技術分享圖片

新增一臺機器:

技術分享圖片

需要重新分配數據歸屬,靈活性差

hash分片方式2:虛擬桶(virtual buckets)

技術分享圖片

hash分片方式3:一致性hash(consistent hashing)

提高靈活性:集群各機器連成一個環

技術分享圖片

路由問題:每個節點配置路由表(finger table)。N14的路由表:

技術分享圖片

每個機器根據路由表轉發請求,直到查到value數據。

新節點加入、離開集群需要結合穩定性檢測策略,更新前後繼指針

穩定性檢測:定期向前後繼節點發送請求,更新前後繼指針

解決負載不均衡/機器異質性問題:引入虛擬節點,將每個物理節點虛擬成多個虛擬節點,分別映射到hash環不同位置

範圍分片(range partition):

技術分享圖片

數據分片在物理機管理往往采用LSM樹,BigTable采用類似B+樹的多層結構

Dynamo Cassandra Riak Voldmort Membase/Couchbase BigTable Azure PNUTS
介紹 內存分布式NoSQL
數據分片 consistent hash consistent hash hash hash hash range range hash+range
virtual node B+ tree

《大數據日知錄》讀書筆記-ch1數據分片與路由