初識TiDB

TiDB簡介

TiDB 是 PingCAP 公司自主設計、研發的開源分佈式關係型數據庫,是一款同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分佈式數據庫產品,具有水平擴容或者縮容、金融級高可用、實時 HTAP、雲原生的分佈式數據庫、兼容 MySQL 5.7 協議和 MySQL 生態等重要特性。目標是爲用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數據規模較大等各類應用場景。面試

PS:OLTP與OLAP
數據處理大體能夠分紅兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。數據庫

OLTP是傳統的關係型數據庫的主要應用,主要是基本的、平常的事務處理,例如銀行交易。強調數據庫內存效率,強調內存各類指標的命令率,強調綁定變量,強調併發操做
OLAP是數據倉庫系統的主要應用,支持複雜的分析操做,側重決策支持,而且提供直觀易懂的查詢結果。 則強調數據分析,強調SQL執行市場,強調磁盤I/O,強調分區等。架構

TiDB特色

高度兼容 MySQL

大多數狀況下,無需修改代碼便可從 MySQL 輕鬆遷移至 TiDB,分庫分表後的 MySQL 集羣亦可經過 TiDB 工具進行實時遷移。併發

水平彈性擴展

經過簡單地增長新節點便可實現 TiDB 的水平擴展,按需擴展吞吐或存儲,輕鬆應對高併發、海量數據場景。負載均衡

分佈式事務

TiDB 100% 支持標準的 ACID 事務。運維

真正金融級高可用

相比於傳統主從 (M-S) 複製方案,基於 Raft 的多數派選舉協議能夠提供金融級的 100% 數據強一致性保證,且在不丟失大多數副本的前提下,能夠實現故障的自動恢復 (auto-failover),無需人工介入。分佈式

一站式 HTAP 解決方案

TiDB 做爲典型的 OLTP 行存數據庫,同時兼具強大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解決方案,一份存儲同時處理 OLTP & OLAP,無需傳統繁瑣的 ETL 過程。高併發

雲原生 SQL 數據庫

TiDB 是爲雲而設計的數據庫,支持公有云、私有云和混合雲,使部署、配置和維護變得十分簡單。工具

很是活躍的社區

基本架構

能夠看出 TiDB 是 Spanner 理念的一個完美實踐,一個 TiDB 集羣由 TiDB、PD、TiKV 三個組件構成。
TiKV Server:負責數據存儲,是一個提供事務的分佈式 Key-Value 存儲引擎;
PD Server:負責管理調度,如數據和 TiKV 位置的路由信息維護、TiKV 數據均衡等;
TiDB Server:負責 SQL 邏輯,經過 PD 尋址到實際數據的 TiKV 位置,進行 SQL 操做。
oop

TiDB Server

TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,並經過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV 交互獲取數據,最終返回結果。
TiDB Server 是無狀態的,其自己並不存儲數據,只負責計算,能夠無限水平擴展,能夠經過負載均衡組件(如LVS、HAProxy 或 F5)對外提供統一的接入地址。

PD Server

Placement Driver (簡稱 PD) 是整個集羣的管理模塊,其主要工做有三個:一是存儲集羣的元信息(某個 Key 存儲在哪一個 TiKV 節點);二是對 TiKV 集羣進行調度和負載均衡(如數據的遷移、Raft group leader 的遷移等);三是分配全局惟一且遞增的事務 ID。
PD 是一個集羣,須要部署奇數個節點,通常線上推薦至少部署 3 個節點。

TiKV Server

TiKV Server 負責存儲數據,從外部看 TiKV 是一個分佈式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是 Region,每一個 Region 負責存儲一個 Key Range(從 StartKey 到 EndKey 的左閉右開區間)的數據,每一個 TiKV 節點會負責多個 Region。TiKV 使用 Raft 協議作複製,保持數據的一致性和容災。副本以 Region 爲單位進行管理,不一樣節點上的多個 Region 構成一個 Raft Group,互爲副本。數據在多個 TiKV 之間的負載均衡由 PD 調度,這裏也是以 Region 爲單位進行調度

TiSpark

TiSpark 做爲 TiDB 中解決用戶複雜 OLAP 需求的主要組件,將 Spark SQL 直接運行在 TiDB 存儲層上,同時融合 TiKV 分佈式集羣的優點,並融入大數據社區生態。至此,TiDB 能夠經過一套系統,同時支持 OLTP 與 OLAP,免除用戶數據同步的煩惱。

應用場景

  • 對數據一致性及高可靠、系統高可用、可擴展性、容災要求較高的金融行業屬性的場景
    衆所周知,金融行業對數據一致性及高可靠、系統高可用、可擴展性、容災要求較高,傳統的解決方案是同城兩個機房提供服務、異地一個機房提供數據容災能務但不提供服務,此解決方案存在資源利用率低、維擴成本高、RTO 及 PRO 沒法真實達到企業所指望的值。TiDB 採用多副本 + Mutli Raft 協議的方式將數據調度到不一樣的機房、機架、機器,當部分機器故障時系統可自動進行切換,確保系統的 RTO <= 30s 及 RPO = 0 。
  • 對存儲容量、可擴展性、併發要求較高的海量數量及高並的 OLTP 場景
    隨着業務的高速發展,數據呈現爆炸性的增加,傳統的單機數據庫沒法知足因數據爆炸性的增加對數據的容量要求,可行方案是採用分庫分表的中間件產品或者 NewSQL 數據庫替代、採用高端的存儲設備等,其中性價比最大的是 NewSQL 數據庫,例如:TiDB。TiDB 採用計算、存儲分離的架構,可對計算、存儲分別進行擴容和縮容,計算節點最大支持 512 節點,每一個節點最大支持 1000 併發,集羣容量最大支持 PB 級別。
  • Real-time HTAP 場景
    隨着 5G、物聯網、人工智能的高速發展,企業所生產的數據會愈來愈多,其規模可能達到數百 TB 甚至 PB 級別,傳統的解決方案是經過 OLTP 型數據庫處理在線聯機交易業務,經過 ETL 工具將數據同步到 OLAP 型數據庫進行數據分析,這種處理方案存在存儲成本高、實際性差等多方面的問題。TiDB 在 4.0 版本中引入列存儲引擎 TiFlash 結合行存儲引擎 TiKV 構建真正的 HTAP 數據庫,在增長少許存儲成本的狀況下,能夠同一個系統中作聯機交易處理、實時數據分析,極大的節省企業的成本。
  • 數據匯聚、二次加工處理的場景
    當前絕大部分企業的業務數據都分散在不一樣的系統中,沒有一個統一的彙總,隨着業務的發展,企業的決策層須要瞭解整個公司的業務情況方便即時的作出決策,故須要將分散在各個系統的數據匯聚在同一個系統並進行二次加工處理生成 T + 0/1 的報表。傳統常見的解決方案是採用 ETL + Hadoop 來完成,但 Hadoop 體系統太複雜,運維、存儲成本過高沒法滿度用戶的需求。與 Hadoop 相比,TiDB 就會簡單得多,業務經過 ETL 工具或者 TiDB 的同步工具將數據同步到 TiDB,在 TiDB 中可經過 SQL 直接生成報表。

應用案例

使用TiUP部署TiDB集羣

見:https://pingcap.com/docs-cn/s...

※更多文章和資料|點擊後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南] CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分佈式監控系統源碼文檔
Linux&Python自學資料包
10G面試題戳領
相關文章
相關標籤/搜索