海量資料的儲存和訪問成為系統設計的瓶頸問題。每天海量資料的增長無疑對資料庫造成了相當高的負載。給系統的穩定性和擴充套件性造成了極大的問題。通過資料的拆來提高系統整體效能,擴充系統整體容量,橫向擴充套件資料層已經成為分布式資料庫架構師及開發人員首選的方式。因此,需要能資料庫的資料進分切分儲存。
儲存檔案會被後台的管理程序仔細地監控起來以確保它們處於控制之下。隨著memstore的刷寫會生成很多磁碟檔案。會生成很小檔案,如果檔案的數目達到閾值,合併(compaction)過程將把它們合併成數量更少的體積更大的檔案,便於資料庫更好地進行資料維護的目的。
資料的切分(sharding)原理:依據其切分規則的型別,能夠分為兩種切分模式。一種是依照不同的表(或者schema)來切分到不同的資料庫(主機)之上。這樣的切能夠稱之為資料的垂直(縱向)切分。第二種則是依據表中的資料的邏輯關係,將同乙個表中的資料依照某種條件拆分到多台資料庫(主機)上面,這樣的切分稱之為資料的水平(橫向)切分。
小合併,指選取一些小的、相鄰的storefile將他們合併成乙個更大的storefile,在這個過程中不會處理已經deleted的檔案。一次minor compaction的結果是更少並且更大的storefile。
大合併,將所有的storefile合併成乙個storefile,這個過程會清理三種資料:被刪除的資料、ttl過期資料、版本號超過設定版本號的資料(version)。
切分 乙個region代表乙個表的一段資料集合,當region太大,hubblemaster會將其拆分。region太大會導致讀取效率太低,遍歷時間太長,通過將大資料拆分到不同機器上,分別查詢再聚合。
手動拆分
在建表的時候就定義好拆分點的演算法,建立表,並傳入拆分點演算法,就可以在建表同事定義拆分點演算法。開始的時候定義預拆分,匯入初始資料,之後使用自動拆分來讓hubble資料庫自動管理region。不要關閉自動拆分。避免因為直接使用預拆分導致的熱點region問題。
自動拆分
固定大小拆分策略,如果單個region大小超過了閥值那麼就拆分為兩個region,這種策略使得集群的region大小很平均。動態限制拆分策略,是新版本的預設策略。有的資料庫檔案增長是翻倍的資料量大小時,進行拆分,如64m、128m、256m等。
熱點拆分策略,這是唯一考慮到熱點資料的拆分策略,如果資料庫中的region某些短時間內被訪問很頻繁,承載了很大壓力,就是熱點region。
在進行合併的過程中,不同機器上的region需要進行合併,region中的資料夾需要合併,資料夾中的sst檔案也需要合併,合併過程會進行大量的讀寫操作,極大程度上占用資源;region的合併稱之為大合併,一般情況下是關閉的,尤其是業務高峰期;平時只會進行sst檔案之間的小合併;只有在業務低峰期(節假日)進行region之間的大合併。一般存放標籤性質的資料包表,當達到過期時間時需要進行region之間的合併操作。
手動合併(又稱冷合併)
通過客戶端命令列的方式,通過人工指定所所需合併檔案,呼叫合併的工具類來實現兩個region的合併,但是有乙個前提,必須保證這兩個region已經下線,保證hubblemaster和所有的hubbleregionserver都停掉,否則會報錯,但是這樣太麻煩了,而且不適合生產使用。
自動合併(又秒熱合併)
在合併策略中配置檔案合併策略閥值,當系統檔案資料達到這值後,系統自動觸發合併任務。
優勢1、拆分規則明確。
2、系統之間進行整合或擴充套件很容易。
3、按照成本、應用的等級、應用的型別等將表放到不同的機器上便於管理。
4、切分的表結構相同,應用層改造較少,只需要增加路由規則即可。
5、提高了系統的穩定性和負載能力。
劣勢1、提高了系統的複雜度。
2、事務處理複雜。
3、切分後,資料是分散的,跨庫join操作難和效能差。
1、分片事務的一致性機制實現複雜。
2、分布式事務的問題。
3、資料遷移的時候麻煩。
分布式專題 分布式鎖
在傳統的單體應用架構中,遇到併發安全性問題時我們可以通過同步鎖synchronized,同步 塊,reentrantlock等方式都可以解決,但隨著業務的發展,單體應用架構不能滿足龐大的使用者請求量,於是分布式系統應用而生,在分布式系統中,由於每個系統都執行在不同的伺服器上,有著不同的jvm,所以j...
分布式技術專題 副本機制
1 raft協議原理 raft 2 單個shard的複製 raft single 3 raft group組 在一定情況下,copyset的數量不是越多越好,在恢復時間確定的情況下,找到合適的copyset的數量可以降低資料丟失的概率。為了提高儲存系統資料可靠性,首先在系統允許的成本範圍內選擇合適的...
分布式技術
資料分布式模式 利用多台計算機並行處理多個請求,在相同的時間內完成更多的請求,解決單機效率瓶頸問題。多集群出現的問題如下 資源 乙個系統提供正常能力需要占用的硬體資源 可用性和可擴充套件性 不同分布式系統的指標 選舉流程 優點 演算法複雜度低,選舉快,簡單易實現 缺點 每個節點需要儲存全域性節點訊息...