本文分享自天翼雲開發者社區《TiDB體系架構》,作者:x****n 如圖所示,TiDB體系中三大組成部分:PD、TiDB Server、TiKV 1.PD:負責產生全局的TSO時間、控制Region在TIkv中的分佈、產生全局事務ID、還有其他ID。 2.TiDB:沒有數據落地,接收客戶端sql語句 ...
本文分享自天翼雲開發者社區《TiDB體系架構》,作者:x****n
如圖所示,TiDB體系中三大組成部分:PD、TiDB Server、TiKV
1.PD:負責產生全局的TSO時間、控制Region在TIkv中的分佈、產生全局事務ID、還有其他ID。
2.TiDB:沒有數據落地,接收客戶端sql語句,對sql語句進行解析和編譯,最終形成執行計劃。DDL語句和基於MVCC的老版本數據的回收,也是TiDB Server操作。
3.TiKV:數據以鍵值隊存儲在TiKV中,主要負責數據持久化、MVCC、Coprocessor、事務以及自身副本的高可用和強一致性(由Muti-raft實現)。
4.TiFlash:列式存儲引擎,主要由擴展的raft共識演算法與Tikv進行數據同步,實現負載均衡、強一致讀取和實時更新,對於OLTP場景這樣就實現了對分析型業務和事務型業務進行隔離,對既有oltp又有olap的是有利的。
TiDB Server有六大功能:
1.處理客戶端的連接
2.SQL語句的解析和編譯
3.關係型數據與KV的轉化
4.SQL語句的執行
5.線上DDL的執行
6.垃圾回收
TiKV的五大功能:
1.Tikv最主要的功能就是負責數據的持久化。
2.TIkv內部是選擇基於lsm-tree的Rocks DB引擎作為存儲引擎,而Rocksdb通過Wal機制保證數據的不丟失。
3.分散式事務支持:Tidb資料庫基於percolator事務模型的兩階段提交過程中,每個Tikv會單獨分配存儲鎖的空間,叫CF lock(列簇),這樣,配合Tidb server和PD全局TSO授時服務,就實現了去中心化的兩階段提交。支持樂觀鎖與悲觀鎖。在5.0之後,實現了兩階段提交中,第二階段非同步提交功能。在oltp中的高併發、小sql場景里,大大降低了寫入延遲。
4.MVCC:實現併發控制、隔離級別、分散式事務、數據快速恢復的基礎。歷史數據會存儲一段時間,最後由GC進行回收。
5.Coprocessor:數據的過濾、部分的聚合、求最大最小值等,這些被下推分散式存儲節點,可以利用Tikv的cpu能力,多個tikv可以並行的進行計算,由於他們已經過濾了數據,相比不計算上傳TiDB server要少,減少了網路的交互成本,TiDB Server的計算成本也相對減少。
PD的五大功能:
1.整個集群TiKV的元數據存儲
2.分配全局ID和事務ID
3.生成全局時間戳TSO
4.收集集群信息進行調度
5.提供TiDBit Dashboard服務
TiFlash的四大功能:
1.列式存儲提高分析查詢效率
2.支持強一致性和實時性
3.業務隔離
4.智能選擇