1.TiDB簡介
最近所接觸的項目均用到了TiDB,於是乎查閱官方相關文檔研究了下,對TiDB重點知識進行了總結。
TiDB是PingCAP公司設計的開源分佈式HTAP (Hybrid Transactional and Analytical Processing)數據庫,結合了傳統的 RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持無限的水平擴展,具備強一致性和高可用性。TiDB的目標 是爲OLTP(OnlineTransactionalProcessing)和OLAP(OnlineAnalyticalProcessing)場景提供一站式的解決方案。
TiDB特性:
- 高度兼容MySql
在絕大部分情況下,無需修改代碼即可從MySql遷移至TiDB。
- 水平彈性擴展
通過簡單地增加新節點就可以實現TiDB的水平擴展。
- 分佈式事務
TiDB100%支持標準的ACID事務。
- 真正金融級高可用
相比於傳統主從(M-S)複製方案,基於Raft的多數派選舉協議可以提供金融級的100%數據強一致性保 證,且在不丟失大多數副本的前提下,可以實現故障的自動恢復(auto-failover),無需人工介入。
- 一站式HTAP解決方案
TiDB作爲典型的OLTP行存數據庫,同時兼具強大的OLAP性能,配合TiSpark,可提供一站式HTAP解決方案,一份存儲同時處理OLTP&OLAP,無需傳統繁瑣的ETL過程。
- 雲原生SQL數據庫
TiDB是爲雲而設計的數據庫,支持公有云、私有云和混合雲,配合TiDBOperator項目可實現自動化運維, 使部署、配置和維護變得十分簡單。
2.TiDB架構
要深入瞭解TiDB的水平擴展和高可用特點,首先需要了解TiDB的整體架構。TiDB集羣主要包括三個核心組件: TiDB Server,PD Server和TiKV Server。
TiDB架構圖:
2.1TiDB Server
TiDBServer負責接收SQL請求,處理SQL相關的邏輯,並通過PD找到存儲計算所需數據的TiKV地址,與TiKV交 互獲取數據,最終返回結果。TiDB Server是無狀態的,其本身並不存儲數據,只負責計算,可以無限水平擴 展,可以通過負載均衡組件(如LVS、HAProxy或F5)對外提供統一的接入地址。
2.2PD Server
PlacementDriver(簡稱PD)是整個集羣的管理模塊,其主要工作有三個:一是存儲集羣的元信息(某個Key存儲 在哪個TiKV節點);二是對TiKV集羣進行調度和負載均衡(如數據的遷移、Raftgroupleader的遷移等);三是分 配全局唯一且遞增的事務ID。 PD通過Raft協議保證數據的安全性。Raft的leader server負責處理所有操作,其餘的PD server僅用於保證高可 用。建議部署奇數個PD節點。
2.3TiKV Server
TiKVServer負責存儲數據,從外部看TiKV是一個分佈式的提供事務的Key-Value存儲引擎。存儲數據的基本單位 是Region,每個Region負責存儲一個KeyRange(從StartKey到EndKey的左閉右開區間)的數據,每個TiKV節點 會負責多個Region。TiKV使用Raft協議做複製,保持數據的一致性和容災。副本以Region爲單位進行管理,不 同節點上的多個Region構成一個Raft Group,互爲副本。數據在多個TiKV之間的負載均衡由PD調度,這裏也 是以Region爲單位進行調度。
2.4TiSpark
TiSpark作爲TiDB中解決用戶複雜OLAP需求的主要組件,將SparkSQL直接運行在TiDB存儲層上,同時融合TiKV 分佈式集羣的優勢,並融入大數據社區生態。至此,TiDB可以通過一套系統,同時支持OLTP與OLAP,免除用 戶數據同步的煩惱。
2.5TiDB Operator
TiDB Operator提供在主流雲基礎設施(Kubernetes)上部署管理TiDB集羣的能力。它結合雲原生社區的容器編 排最佳實踐與TiDB的專業運維知識,集成一鍵部署、多集羣混部、自動運維、故障自愈等能力,極大地降低 了用戶使用和管理TiDB的門檻與成本。