分布式系統的資料分布方式

2021-09-05 12:28:30 字數 3646 閱讀 8776

雜湊方式

常見雜湊方式:(使用者id) % (機器(組)數)=  分配到0~(機器(組)數-1)上

優點:只要雜湊函式的雜湊特性較好,雜湊方式可以較為均勻的將資料分布到集群中去。

缺點:①可擴充套件性不高,一旦集群規模需要擴充套件,則幾乎所有的資料需要被遷移並重新分布。

②一旦某資料特徵值的資料嚴重不均,容易出現「資料傾斜」(data skew)問題。

解決方式:

①擴充套件雜湊分布的資料系統時,要成倍的擴充套件,按照資料重新計算雜湊,這樣原本一台機器上的資料只需遷移一半到另一台對應的機器上即可完成擴充套件。

②將對應關係作為元資料,由專門的元資料伺服器管理。將雜湊值取模的值大於機器的數量,這樣同一臺機器上需要負責多個雜湊取模的餘數。在集群擴容時,將部分餘數分配到新加的機器並遷移對應的資料到新機器上。

③重新選擇需要雜湊的資料特徵

按資料範圍分布

將資料按特徵值的值域範圍劃分為不同的區間,使得集群中每台(組)伺服器處理不同區間的資料。

常見分布方式:已知某系統中使用者 id 的值域範圍是[1,100),集群有 3 臺伺服器,使用按資料範圍劃分資料的資料分布方式。將使用者 id 的值域分為三個區間[1, 33),[33, 90),[90, 100)分別由 3 臺伺服器負責處理。

優點:可以靈活的根據資料量的具體情況拆分原有資料區間,拆分後的資料區間可以遷移到其他機器,當需要集群完成負載均衡時,與雜湊方式相比非常靈活。另外,當集群需要擴容時,可以隨意新增機器,而不限為倍增的方式,只需將原機器上的部分資料分割槽遷移到新加入的機器上就可以完成集群擴容。

缺點:①也會出現「資料傾斜」(data skew)問題。例:某個資料的使用者量大

②需要維護較為複雜的元資訊。隨著集群規模的增長,元資料伺服器較為容易成為瓶頸,從而需要較多的元資料伺服器解決這個問題。

解決方式:

工程中,為了資料遷移等負載均衡操作的方便,往往利用動態劃分區間的技術,使得每個區間中服務的資料量盡量的一樣多。當某個區間的資料量較大時,通過將區間「**」的方式拆分為兩個區間,使得每個資料區間中的資料量都盡量維持乙個較為固定的閾值之下。

按資料量分布

資料量分布資料與具體的資料特徵無關,而是將資料視為乙個順序增長的檔案,並將這個檔案按照某一較為固定的大小劃分為若干資料塊(chunk),不同的資料塊分布到不同的伺服器上。

優點:一般沒有資料傾斜的問題

當集群需要重新負載均衡時,只需通過遷移資料塊即可完成。

集群擴容,只需將部分資料庫遷移到新加入的機器上即可以完成擴容。

缺點:需要管理較為複雜的元資訊,高效的管理元資訊成為新的課題。

一致性雜湊

一致性雜湊的基本方式是使用乙個雜湊函式計算資料或資料特徵的雜湊值,令該雜湊函式的輸出值域為乙個封閉的環,即雜湊函式輸出的最大值是最小值的前序。將節點隨機分布到這個環上,每個節點負責處理從自己開始順時針至下乙個節點的全部雜湊值域上的資料。

優點:可以任意動態新增、刪除節點,每次新增、刪除乙個節點僅影響一致性雜湊環上相鄰的節點。

缺點:隨機分布節點的方式使得很難均勻的分布雜湊值域,尤其在動態增加節點後,即使原先的分布均勻也很難保證繼續均勻,由此帶來的另乙個較為嚴重的缺點是,當乙個節點異常時,該節點的壓力全部轉移到相鄰的乙個節點,當加入乙個新節點時只能為乙個相鄰節點分攤壓力。

改進演算法:引入虛節點(virtual node)的概念,系統初始時就建立許多虛節點,虛節點的個數一般遠大於未來集群中機器的個數,將虛節點均勻分布到一致性雜湊值域環上,其功能與基本一致性雜湊演算法中的節點相同。為每個節點分配若干虛節點。運算元據時,首先通過資料的雜湊值在環上找到對應的虛節點,進而查詢元資料找到對應的真實節點。

副本與資料分布

分布式系統容錯、提高可用性的基本手段就是使用副本。一種基本的資料副本策略是以機器為單位,若干機器互為副本,副本機器之間的資料完全相同。

優點:非常簡單

缺點:恢復資料的效率不高、可擴充套件性也不高。

注:副本之間的資料完全相同,1、2、3互為副本   4、5、6互為副本   7、8、9互為副本
如果其中1臺機器出現故障,為了不影響服務需要新機器從剩下的2台上拷貝資料。

①如果全盤拷貝相當消耗資源,如果將一台可用的副本下線專門拷貝,那麼此時正常的副本數只有乙個,會有巨大的安全隱患。

②如果用限速的方法從2個副本上拷貝資料,恢復的時間又很長

③不利於提高擴充套件性,如果只增加2臺機器,因為2臺機器無法組成新的副本組,則無法擴容。相當於加了66%的機器卻擴容失敗

(此處並非無法擴容,可以擴容只不過承擔的風險會比較大,同時2臺機器的壓力會增加,如果有1臺宕機那麼只有一台可以提供服務)

④不利於系統容錯,加個有3個副本,1臺宕機後剩下2臺的壓力將增大50%

更合適的做法不是以機器作為副本單位,而是將資料拆為較合理的資料段,以資料段為單位作為副本。

資料段的選擇:

①雜湊:每個雜湊分桶後的餘數可以作為乙個資料段,為了控制資料段的大小,常常使得分桶個數大於集群規模。

②按資料範圍分布:將每個資料區間作為乙個資料段,並控制資料區間中資料的大小。

③按資料量分資料:按照每個資料塊作為資料段。

④一致性雜湊:將一致性雜湊環分為若干等長分割槽,分割槽個數一般遠大於節點個數,假設雜湊函式均勻,則每個分割槽中的資料可以作為乙個資料段。

此種方式的優點:
①這種方式使副本分布與機器無關,副本丟失後的恢復效率非常高,如果機器1宕機,那可以從集群中剩下的所有機器上同時拷貝恢復資料(即使限速也會很快,因為機器多啊)

②利於集群容錯,宕機機器上的副本分散於整個集群,壓力分散到整個集群自然就小了

③利於集群擴充套件,加入一台新機器的時候只需要從各機器上遷移1/n比例的資料段到新機器就可以實現新的負載均衡。

本地化計算對於分布式系統而言,除了解決大規模儲存問題更需要解決大規模的計算問題。

如果計算節點和儲存節點位於不同的物理機器則計算的資料需要通過網路傳輸,此種方式的開銷很大,甚至網路頻寬會成為系統的總體瓶頸。另一種思路是,將計算盡量排程到與儲存節點在同一臺物理機器上的計算節點上進行,這稱之為本地化計算。本地化計算是計算排程的一種重要優化,其體現了一種重要的分布式排程思想:「移動資料不如移動計算」。

資料分布方式的選擇

資料傾斜問題:在按雜湊分資料的基礎上引入按資料量分布資料的方式,解決該資料傾斜問題。

按使用者 id 的雜湊值分資料,當某個使用者 id 的資料量特別大時,該使用者的資料始終落在某一台機器上。此時,引入按資料量分布資料的方式,統計使用者的資料量,並按某一閾值將使用者的資料切為多個均勻的資料段,將這些資料段分布到集群中去。由於大部分使用者的資料量不會超過閾值,所以元資料中僅僅儲存超過閾值的使用者的資料段分布資訊,從而可以控制元資料的規模。

常見分布式系統的資料分布方式系統

gfs & hdfs 按資料量分布

map reduce 按 gfs 的資料分布做本地化

big table & hbase 按資料範圍分布

pnuts 雜湊方式/按資料範圍分布(可選)

dynamo & cassandra 一致性雜湊

mola & armor  雜湊方式

big pipe  雜湊方式

doris 雜湊方式與按資料量分布組合

分布式系統 資料分布方式

分布式系統如何拆解輸入資料,將資料分發到不同的機器中。下面將介紹幾種不同的資料分布方式。color red b 一 雜湊方式 b color 雜湊方式是最常見的資料分布方式,其方法是按照資料的某一特徵計算雜湊值,並將雜湊值與機器中的機器建立對映關係,從而將不同雜湊值的資料分布到不同的機器上。所謂資料...

分布式 分布式系統的設計

在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...

分布式系統中的分布式事務

分布式事務中可以借助mq訊息系統來進行事務控制,這一點與可靠訊息最終一致方案一樣。看來mq中介軟體確實在乙個分布式系統架構中,扮演者重要的角色。最大努力通知方案是比較簡單的分布式事務方案,它本質上就是通過定期校對,實現資料一致性。中介軟體如何保證訊息的一致性 問題的問法多種多樣,怎麼保證兩個伺服器的...