TiDB基本簡介


一、TiDB整體架構

與傳統的單機數據庫相比,TiDB具有以下優勢:

  • 純分布式架構,擁有良好的擴展性,支持彈性的擴縮容
  • 支持SQL,對外暴露MySQL的網絡協議,並兼容大多數MySQL的語法,在大多數場景下可以直接替換MySQL
  • 默認支持高可用,在少數副本失效的情況下,數據庫本身能夠自動進行數據修復和故障轉移,對業務透明
  • 支持ACID事務,對於一些有強一致需求的場景友好,例如:銀行轉賬
  • 具有豐富的工具鏈生態,覆蓋數據遷移、同步、備份等多種場景

二、TiDB架構圖

在內核設計上,TiDB分布式數據庫將整體架構拆分成了多個模塊,各模塊之間互相通信,組成完整的TiDB系統。對應的架構圖如下:

 

1、TiDB Server:SQL層,對外暴露MySQL協議的連接endpoint,負責接受客戶端的鏈接,執行SQL解析和優化,最終生成分布式執行計划

TiDB層本身是無狀態的,實踐中可以啟動多個TiDB實例,通過負載均衡組件(如LVS、HAProxy、或F5)對外提供統一的接入地址,客戶端的

連接可以均勻的分攤在多個TiDB實例上以達到負載均衡的效果。TiDB Server本身並不存儲數據,只是解析SQL,將實際的數據讀取請求轉發給底層的存儲節點TiKV(或TiFlash)

2、PD(Placement Driver) Server:整個TiDB集群的元信息管理模塊,負責存儲每個TiKV節點實時的數據分布情況和集群的整體拓撲結構,提供TiDB Dashboard管控界面,並為

分布式事務分配事務ID。PD不僅存儲元信息,同時還會根據TiKV節點實時上報的數據分布狀態,下發數據調度命令給具體的TiKV節點,可以說是整個集群的“大腦”。此外,PD本身

也是由至少3個節點構成,擁有高可用的能力。建議部署奇數個PD節點。

3、存儲節點

  • TiKV Server:負責存儲數據,從外部看TiKV是一個分布式的提供事務的Key-Value存儲引擎。存儲數據的基本單位是Region,每個Region負責存儲一個Key Range(從StartKey到

EndKey的左閉右開區間)的數據,每個TiKV節點會負責多個Region。TiKV的API在KV鍵值對層面提供對分布式事務的原生支持,默認提供了SI(Snampshot Isolation)的隔離級別,這也是

TiDB在SQL層面支持分布式事務的核心。TiDB的SQL層做完SQL解析后,會將SQL的執行計划轉換為對TiKV API的實際調用。所以,數據都存儲在TiKV中。另外,TiKV中的數據都會自動

維護多副本(默認為三副本),天然支持高可用和自動故障轉移。

  • TiFlash:TiFlash是一類特殊的存儲節點。和普通TiKV節點不一樣的是,在TiFlash內部,數據是以列式的形式進行存儲,重要的功能是為分析型的場景加速。


免責聲明!

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



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