TiDB 是 PingCAP 公司設(shè)計(jì)的開源分布式 HTAP (Hybrid Transactional and Analytical Processing) 數(shù)據(jù)庫(kù),結(jié)合了傳統(tǒng)的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持無限的水平擴(kuò)展,具備強(qiáng)一致性和高可用性。TiDB 的目標(biāo)是為 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 場(chǎng)景提供一站式的解決方案。
最近的兩個(gè)項(xiàng)目日流量>一千萬,單數(shù)據(jù)庫(kù)>500GB,小集群,模塊與數(shù)據(jù)分離,使用傳統(tǒng)的備份同步方案已經(jīng)完全不能滿足需求,找到TiDB后感覺是個(gè)不錯(cuò)的選擇,特記錄。
TiDB 的設(shè)計(jì)目標(biāo)是 100% 的 OLTP 場(chǎng)景和 80% 的 OLAP 場(chǎng)景,更復(fù)雜的 OLAP 分析可以通過 TiSpark 項(xiàng)目來完成。
TiDB 對(duì)業(yè)務(wù)沒有任何侵入性,能優(yōu)雅的替換傳統(tǒng)的數(shù)據(jù)庫(kù)中間件、數(shù)據(jù)庫(kù)分庫(kù)分表等 Sharding 方案。同時(shí)它也讓開發(fā)運(yùn)維人員不用關(guān)注數(shù)據(jù)庫(kù) Scale 的細(xì)節(jié)問題,專注于業(yè)務(wù)開發(fā),極大的提升研發(fā)的生產(chǎn)力。
三篇文章了解 TiDB 技術(shù)內(nèi)幕:
要深入了解 TiDB 的水平擴(kuò)展和高可用特點(diǎn),首先需要了解 TiDB 的整體架構(gòu)。TiDB 集群主要包括三個(gè)核心組件:TiDB Server,PD Server 和 TiKV Server。此外,還有用于解決用戶復(fù)雜 OLAP 需求的 TiSpark 組件。
TiDB Server 負(fù)責(zé)接收 SQL 請(qǐng)求,處理 SQL 相關(guān)的邏輯,并通過 PD 找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的 TiKV 地址,與 TiKV 交互獲取數(shù)據(jù),最終返回結(jié)果。TiDB Server 是無狀態(tài)的,其本身并不存儲(chǔ)數(shù)據(jù),只負(fù)責(zé)計(jì)算,可以無限水平擴(kuò)展,可以通過負(fù)載均衡組件(如LVS、HAProxy 或 F5)對(duì)外提供統(tǒng)一的接入地址。
Placement Driver (簡(jiǎn)稱 PD) 是整個(gè)集群的管理模塊,其主要工作有三個(gè):一是存儲(chǔ)集群的元信息(某個(gè) Key 存儲(chǔ)在哪個(gè) TiKV 節(jié)點(diǎn));二是對(duì) TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務(wù) ID。
PD 通過 Raft 協(xié)議保證數(shù)據(jù)的安全性。Raft 的 leader server 負(fù)責(zé)處理所有操作,其余的 PD server 僅用于保證高可用。建議部署奇數(shù)個(gè) PD 節(jié)點(diǎn)。
TiKV Server 負(fù)責(zé)存儲(chǔ)數(shù)據(jù),從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)的基本單位是 Region,每個(gè) Region 負(fù)責(zé)存儲(chǔ)一個(gè) Key Range(從 StartKey 到 EndKey 的左閉右開區(qū)間)的數(shù)據(jù),每個(gè) TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè) Region。TiKV 使用 Raft 協(xié)議做復(fù)制,保持?jǐn)?shù)據(jù)的一致性和容災(zāi)。副本以 Region 為單位進(jìn)行管理,不同節(jié)點(diǎn)上的多個(gè) Region 構(gòu)成一個(gè) Raft Group,互為副本。數(shù)據(jù)在多個(gè) TiKV 之間的負(fù)載均衡由 PD 調(diào)度,這里也是以 Region 為單位進(jìn)行調(diào)度。
TiSpark 作為 TiDB 中解決用戶復(fù)雜 OLAP 需求的主要組件,將 Spark SQL 直接運(yùn)行在 TiDB 存儲(chǔ)層上,同時(shí)融合 TiKV 分布式集群的優(yōu)勢(shì),并融入大數(shù)據(jù)社區(qū)生態(tài)。至此,TiDB 可以通過一套系統(tǒng),同時(shí)支持 OLTP 與 OLAP,免除用戶數(shù)據(jù)同步的煩惱。
TiDB 可以部署在本地和云平臺(tái)上,支持公有云、私有云和混合云。你可以根據(jù)實(shí)際場(chǎng)景或需求,選擇相應(yīng)的方式來部署 TiDB 集群:
TiDB 作為一款開源分布式 NewSQL 數(shù)據(jù)庫(kù),可以很好的部署和運(yùn)行在 Intel 架構(gòu)服務(wù)器環(huán)境及主流虛擬化環(huán)境,并支持絕大多數(shù)的主流硬件網(wǎng)絡(luò)。作為一款高性能數(shù)據(jù)庫(kù)系統(tǒng),TiDB 支持主流的 Linux 操作系統(tǒng)環(huán)境。
Linux 操作系統(tǒng)平臺(tái) | 版本 |
---|---|
Red Hat Enterprise Linux | 7.3 及以上 |
CentOS | 7.3 及以上 |
Oracle Enterprise Linux | 7.3 及以上 |
Ubuntu LTS | 16.04 及以上 |
TiDB 只支持 Red Hat 兼容內(nèi)核 (RHCK) 的 Oracle Enterprise Linux,不支持 Oracle Enterprise Linux 提供的 Unbreakable Enterprise Kernel。
TiDB 在 CentOS 7.3 的環(huán)境下進(jìn)行過大量的測(cè)試,同時(shí)社區(qū)也有很多該操作系統(tǒng)部署的最佳實(shí)踐,因此,建議使用 CentOS 7.3 以上的 Linux 操作系統(tǒng)來部署 TiDB。
以上 Linux 操作系統(tǒng)可運(yùn)行在物理服務(wù)器以及 VMware、KVM、XEN 主流虛擬化環(huán)境上。
注意
TiDB 集群所有組件的源碼均可從 GitHub 上直接訪問。
聯(lián)系客服