TiDB基本架構簡單總結


TiDB特點

  • 高可用
  • 水平拓展
  • 事務
  • SQL支持

TiDB架構

​ 和MySql不同,TiDB是一個分布式的數據庫而不是單個進程,所以整個TiDB是由以下角色組成: TiKV, PD, TiDB, TiSpark。每個角色都是部署在多台機器上的進程組成的集群。

TiKV PD TiDB功能

TiKV

​ TiKV負責數據的存儲,對外而言,它就是一個提供key-value存儲的引擎。但它存儲的並不是離散的Key,而在一個范圍內的Key,這個范圍內的key-value是存儲的基本單元,稱為Region。

​ 對不同的數據類型,存儲的數據格式如下:

數據類型 key value
行記錄 表ID+行ID 行數據
唯一索引或主鍵 表ID+索引ID+索引值 行ID
非唯一索引 表ID+索引ID+索引值+行ID

​ 而TiKV集群上的單節點上真正負責存儲的是FaceBook開源的RocksDB引擎。但RocksDB自身並沒有解決單點失效的問題,TiKV采用多副本的方式來解決,而實現則是在RocksDB之上封裝一層支持Raft協議,以在多節點之間同步數據。僅對於同一個Region, 只有一個leader節點接收外部對其的讀寫,其他節點只是用來做備份(即不同機器上的同一個Region 組成一個 Raft group)。

​ 所以對外部而言,TiKV可以認為是一個可以提供無限大容量的K-V存儲服務(當磁盤空間不足時,可以比較方便地通過增加機器來拓容)。

PD

​ PD全稱是Placement Driver,是對整個TiDB集群管理進行管理的角色。它最重要的功能是存儲數據的元數據,即Key和TiKV中節點的對應關系。此外,負責對集群進行調度和負載均衡Region遷移, Region Raft Leader遷移),以及提供全局唯一遞增的事務ID。PD集群也是通過Raft協議保證數據安全,但只有一台機器(Leader)負責處理所有的操作。

TiDB

​ TiDB角色負責對外交互(mysql協議),優化sql之后,向PD獲取要讀取的Key對應的TiKV節點信息,之后再向TiKV上的Region Raft Leader所在節點發起請求獲取數據,再返回客戶端。即TiDB是無狀態的,不存儲任何數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM