成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TIDB中TiKV詳解

IT那活兒 / 942人閱讀
TIDB中TiKV詳解

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!??!


TiKV簡介

TiKV 是一個(gè)分布式事務(wù)型的鍵值數(shù)據(jù)庫,提供了滿足 ACID 約束的分布式事務(wù)接口,并且通過 Raft 協(xié)議保證了多副本數(shù)據(jù)一致性以及高可用。TiKV 作為 TiDB 的存儲(chǔ)層,為用戶寫入 TiDB 的數(shù)據(jù)提供了持久化以及讀寫服務(wù),同時(shí)還存儲(chǔ)了 TiDB 的統(tǒng)計(jì)信息數(shù)據(jù),其內(nèi)部是有RocksDB構(gòu)成。
與傳統(tǒng)的整節(jié)點(diǎn)備份方式不同,TiKV 將數(shù)據(jù)按照 key 的范圍劃分成大致相等的切片統(tǒng)稱為Region,每一個(gè)切片會(huì)有多個(gè)副本(通常是 3 個(gè)),其中一個(gè)副本是 Leader,提供讀寫服務(wù)。
TiKV 通過 PD 對這些 Region 以及副本進(jìn)行調(diào)度,以保證數(shù)據(jù)和讀寫負(fù)載都均勻地分散在各個(gè) TiKV 上,這樣的設(shè)計(jì)保證了整個(gè)集群資源的充分利用并且可以隨著機(jī)器數(shù)量的增加水平擴(kuò)展。


RocksDB詳解

RocksDB 作為 TiKV 的核心存儲(chǔ)引擎,用于存儲(chǔ) Raft 日志以及用戶數(shù)據(jù)。每個(gè) TiKV 實(shí)例中有兩個(gè) RocksDB 實(shí)例,一個(gè)用于存儲(chǔ) Raft 日志(通常被稱為 raftdb),另一個(gè)用于存儲(chǔ)用戶數(shù)據(jù)以及 MVCC 信息,有四個(gè) ColumnFamily:raft、lock、default 和 write:
  • raft 列:用于存儲(chǔ)各個(gè) Region 的元信息。僅占極少量空間,用戶可以不必關(guān)注。
  • lock 列:用于存儲(chǔ)悲觀事務(wù)的悲觀鎖以及分布式事務(wù)的一階段 Prewrite 鎖。當(dāng)用戶的事務(wù)提交之后,lock cf 中對應(yīng)的數(shù)據(jù)會(huì)很快刪除掉,因此大部分情況下 lock cf 中的數(shù)據(jù)也很少(少于 1GB)。如果 lock cf 中的數(shù)據(jù)大量增加,說明有大量事務(wù)等待提交,系統(tǒng)出現(xiàn)了 bug 或者故障。
  • write 列:用于存儲(chǔ)用戶真實(shí)的寫入數(shù)據(jù)以及 MVCC 信息(該數(shù)據(jù)所屬事務(wù)的開始時(shí)間以及提交時(shí)間)。當(dāng)用戶寫入了一行數(shù)據(jù)時(shí),如果該行數(shù)據(jù)長度小于 255 字節(jié),那么會(huì)被存儲(chǔ) write 列中,否則的話該行數(shù)據(jù)會(huì)被存入到 default 列中。由于 TiDB 的非 unique 索引存儲(chǔ)的 value 為空,unique 索引存儲(chǔ)的 value 為主鍵索引,因此二級(jí)索引只會(huì)占用 writecf 的空間。
  • default 列:用于存儲(chǔ)超過 255 字節(jié)長度的數(shù)據(jù)。


Region與Raft協(xié)議

Region 與副本之間通過 Raft 協(xié)議來維持?jǐn)?shù)據(jù)一致性,任何寫請求都只能在 Leader 上寫入,并且需要寫入多數(shù)副本后(默認(rèn)配置為 3 副本,即所有請求必須至少寫入兩個(gè)副本成功)才會(huì)返回客戶端寫入成功。
當(dāng)某個(gè) Region 的大小超過一定限制(默認(rèn)是 144MB)后,TiKV 會(huì)將它分裂為兩個(gè)或者更多個(gè) Region,以保證各個(gè) Region 的大小是大致接近的,這樣更有利于 PD 進(jìn)行調(diào)度決策。同樣,當(dāng)某個(gè) Region 因?yàn)榇罅康膭h除請求導(dǎo)致 Region 的大小變得更小時(shí),TiKV 會(huì)將比較小的兩個(gè)相鄰 Region 合并為一個(gè)。
當(dāng) PD 需要把某個(gè) Region 的一個(gè)副本從一個(gè) TiKV 節(jié)點(diǎn)調(diào)度到另一個(gè)上面時(shí),PD 會(huì)先為這個(gè) Raft Group 在目標(biāo)節(jié)點(diǎn)上增加一個(gè) Learner 副本(雖然會(huì)復(fù)制 Leader 的數(shù)據(jù),但是不會(huì)計(jì)入寫請求的多數(shù)副本中)。當(dāng)這個(gè) Learner 副本的進(jìn)度大致追上 Leader 副本時(shí),Leader 會(huì)將它變更為 Follower,之后再移除操作節(jié)點(diǎn)的 Follower 副本,這樣就完成了 Region 副本的一次調(diào)度。

Leader 副本的調(diào)度原理也類似,不過需要在目標(biāo)節(jié)點(diǎn)的 Learner 副本變?yōu)?Follower 副本后,再執(zhí)行一次 Leader Transfer,讓該 Follower 主動(dòng)發(fā)起一次選舉成為新 Leader,之后新 Leader 負(fù)責(zé)刪除舊 Leader 這個(gè)副本。


數(shù)據(jù)讀機(jī)制

數(shù)據(jù)的讀寫都是會(huì)想向PD請求一個(gè)時(shí)間戳,當(dāng)需要讀到某表時(shí),發(fā)現(xiàn)該表正在進(jìn)行寫操作表被鎖,這時(shí)數(shù)據(jù)庫會(huì)獲取當(dāng)前時(shí)時(shí)間戳并等待,待獲取到存在有寫事件的開始時(shí)間大于等于該時(shí)間戳?xí)r,讀任務(wù)會(huì)再進(jìn)行讀操作,從而避免讀取到臟數(shù)據(jù)。


數(shù)據(jù)寫機(jī)制

TIDB數(shù)據(jù)寫入進(jìn)TiKV中時(shí),每個(gè)數(shù)據(jù)都會(huì)至少存在3個(gè)副本Region,寫入時(shí)首先寫入Raft日志,再由TiKV根據(jù)raft列的日志信息將數(shù)據(jù)寫入到該表所存在的每個(gè)Region中,待大部分region數(shù)據(jù)寫入都完成后確保數(shù)據(jù)不會(huì)丟失,則一次的寫入操作才算完成。



本文作者:李孝林(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129211.html

相關(guān)文章

  • 天真貝葉斯學(xué)習(xí)機(jī) | TiDB Hackathon 優(yōu)秀項(xiàng)目分享

    摘要:我們非常希望本屆誕生的優(yōu)秀項(xiàng)目能夠在社區(qū)中延續(xù)下去,感興趣的小伙伴們可以加入進(jìn)來哦本文作者是來自團(tuán)隊(duì)的楊文同學(xué),他們的項(xiàng)目天真貝葉斯學(xué)習(xí)機(jī)在本屆中獲得了三等獎(jiǎng)最佳創(chuàng)意獎(jiǎng)。比賽前一日從廣州南站出發(fā),次日抵達(dá)北京西站。 Ti Hack 系列 TiDB Hackathon 2018 共評選出六組優(yōu)秀項(xiàng)目,本系列文章將由這六組項(xiàng)目的成員主筆,分享他們的參賽經(jīng)驗(yàn)和成果。我們非常希望本屆 Hack...

    Anshiii 評論0 收藏0
  • TiDB Lab 誕生記 | TiDB Hackathon 優(yōu)秀項(xiàng)目分享

    摘要:本文由紅鳳凰粉鳳凰粉紅鳳凰隊(duì)的成員主筆,他們的項(xiàng)目在本屆中獲得了二等獎(jiǎng)。用戶在平臺(tái)上進(jìn)行第一章部署的學(xué)習(xí),了解到可以通過進(jìn)行部署。收到事件后,更新。由于位置是由屬性給出的,因此為其加上,即可實(shí) 本文由紅鳳凰粉鳳凰粉紅鳳凰隊(duì)的成員主筆,他們的項(xiàng)目 TiDB Lab?在本屆 TiDB Hackathon 2018 中獲得了二等獎(jiǎng)。TiDB Lab 為 TiDB 培訓(xùn)體系增加了一個(gè)可以動(dòng)態(tài)觀...

    asoren 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<