国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TIDB中TiKV詳解

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

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!


TiKV簡介

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


RocksDB詳解

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


Region與Raft協議

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

Leader 副本的調度原理也類似,不過需要在目標節點的 Learner 副本變為 Follower 副本后,再執行一次 Leader Transfer,讓該 Follower 主動發起一次選舉成為新 Leader,之后新 Leader 負責刪除舊 Leader 這個副本。


數據讀機制

數據的讀寫都是會想向PD請求一個時間戳,當需要讀到某表時,發現該表正在進行寫操作表被鎖,這時數據庫會獲取當前時時間戳并等待,待獲取到存在有寫事件的開始時間大于等于該時間戳時,讀任務會再進行讀操作,從而避免讀取到臟數據。


數據寫機制

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



本文作者:李孝林(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129211.html

相關文章

  • 天真貝葉斯學習機 | TiDB Hackathon 優秀項目分享

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

    Anshiii 評論0 收藏0
  • TiDB Lab 誕生記 | TiDB Hackathon 優秀項目分享

    摘要:本文由紅鳳凰粉鳳凰粉紅鳳凰隊的成員主筆,他們的項目在本屆中獲得了二等獎。用戶在平臺上進行第一章部署的學習,了解到可以通過進行部署。收到事件后,更新。由于位置是由屬性給出的,因此為其加上,即可實 本文由紅鳳凰粉鳳凰粉紅鳳凰隊的成員主筆,他們的項目 TiDB Lab?在本屆 TiDB Hackathon 2018 中獲得了二等獎。TiDB Lab 為 TiDB 培訓體系增加了一個可以動態觀...

    asoren 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<