三篇文章了解 TiDB 技術(shù)內(nèi)幕——說存儲(學(xué)習(xí)總結(jié))

實現(xiàn)一個分布式存儲需要考慮如下幾個問題:

  1. 存儲引擎
  2. 負(fù)載均衡(包括如何擴(kuò)容,縮容)
  3. 高可用
  4. 一致性

存儲引擎:
tidb 底層存儲的數(shù)據(jù)內(nèi)容就是 key-value, 其實就是一個大的map,tidb 選擇開源的 RocksDB

負(fù)載均衡:
因為面向的是海量數(shù)據(jù),所以數(shù)據(jù)需要均衡的分布在不同的存儲節(jié)點上, 通常就兩種選擇 hash (對key進(jìn)行hash計算,根據(jù)hash結(jié)果分散在不同節(jié)點), range(對key 進(jìn)行排序,按照順序分鐘多段,每段存在一個節(jié)點上) 兩種, tidb 選擇 range 方式。
選擇 range 方式,主要是根據(jù)tidb業(yè)務(wù)場景選擇的, 因為是 關(guān)系數(shù)據(jù)庫,所以有大量連續(xù)數(shù)據(jù)場景, 所以其實是沒得選擇,只能選range。選range 帶來的問題是熱點數(shù)據(jù)的問題。

高可用,一致性:
分布式系統(tǒng)數(shù)據(jù)一定要高可用,也就是同一份數(shù)據(jù)要存儲多份(每份數(shù)據(jù)都要存儲在不同的節(jié)點上),這樣就牽扯出來一致性問題,因為 tidb 的目標(biāo)是強(qiáng)一致,所以一定要選擇 raft,paxos 等強(qiáng)一致協(xié)議,tidb 選擇的是 raft(采用開源etcd中的raft實現(xiàn))

看起來很簡單,其實原理就是這么簡單。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容