TIDB介紹

TiDB 是什麼?

TiDB 是一個分佈式 NewSQL 數據庫。它支持水平彈性擴展、ACID 事務、標準 SQL、MySQL 語法和 MySQL 協議,具備數據強一致的高可用特性,是一個不只適合 OLTP 場景還適合 OLAP 場景的混合數據庫。mysql

TiDB怎麼來的?sql

著名的開源分佈式緩存服務 Codis 的做者,PingCAP聯合創始人& CTO ,資深 infrastructure 工程師的黃東旭,擅長分佈式存儲系統的設計與實現,開源狂熱分子的技術大神級別人物。即便在互聯網如此繁榮的今天,在數據庫這片邊界模糊且不肯定地帶,他還在努力尋找肯定性的實踐方向。數據庫

直到 2012 年末,他看到 Google 發佈的兩篇論文,如同棱鏡般,折射出他本身心裏微爍的光彩。這兩篇論文描述了 Google 內部使用的一個海量關係型數據庫 F1/Spanner ,解決了關係型數據庫、彈性擴展以及全球分佈的問題,並在生產中大規模使用。「若是這個能實現,對數據存儲領域來講將是顛覆性的」,黃東旭爲完美方案的出現而興奮, PingCAP 的 TiDB 在此基礎上誕生了。緩存

TiDB架構

TiDB在總體架構基本是參考 Google Spanner 和 F1 的設計,上分兩層爲TiDB和TiKV。 TiDB 對應的是 Google F1, 是一層無狀態的 SQL Layer ,兼容絕大多數 MySQL 語法,對外暴露 MySQL 網絡協議,負責解析用戶的 SQL 語句,生成分佈式的 Query Plan,翻譯成底層 Key Value 操做發送給 TiKV , TiKV 是真正的存儲數據的地方,對應的是 Google Spanner ,是一個分佈式 Key Value 數據庫,支持彈性水平擴展,自動的災難恢復和故障轉移(高可用),以及 ACID 跨行事務。值得一提的是 TiKV 並不像 HBase 或者 BigTable 那樣依賴底層的分佈式文件系統,在性能和靈活性上能更好,這個對於在線業務來講是很是重要。服務器

 

TiKV Server:負責數據存儲,是一個提供事務的分佈式 Key-Value 存儲引擎;
PD Server:負責管理調度,如數據和 TiKV 位置的路由信息維護、TiKV 數據均衡等;
TiDB Server:負責 SQL 邏輯,經過 PD 尋址到實際數據的 TiKV 位置,進行 SQL 操做。

網絡

TiDB的特性

1. 水平擴展:包括計算能力和存儲能力。TiDB Server 負責處理 SQL 請求,隨着業務的增加,能夠簡單的添加 TiDB Server 節點,提升總體的處理能力,提供更高的吞吐。TiKV 負責存儲數據,隨着數據量的增加,能夠部署更多的 TiKV Server 節點解決數據 Scale 的問題。PD 會在 TiKV 節點之間以 Region 爲單位作調度,將部分數據遷移到新加的節點上。
2. 高可用:TiDB/TiKV/PD 這三個組件都能容忍部分實例失效,不影響整個集羣的可用性架構


TIDB的部署

1. 因 TiDB 和 PD 對磁盤 IO 要求不高,因此只須要普通磁盤便可。
2. TiKV 對磁盤 IO 要求較高。TiKV 硬盤大小建議不超過 500G,以防止硬盤損害時,數據恢復耗時過長。整個 TiDB 架構是面向將來、面向海量數據高併發場景,底層存儲技術(如數據定位 seek)都是針對當前主流的 SSD 進行設計和優化的,不會對傳統的 SATA/SAS 機械硬盤再進行優化。(參考鳳凰網的部署方案)
3. 部署工具使用了 TiDB-Ansible。TiDB-Ansible 是 PingCap 基於 Ansible playbook 功能編寫了一個集羣部署工具叫 TiDB-Ansible。使用該工具能夠快速部署一個完整的 TiDB 集羣(包括 PD、TiDB、TiKV 和集羣監控模塊)

併發

TIDB的監控方案 

Pincap 團隊給 TiDB 提供了一整套監控的方案,他們使用開源時序數據庫 Prometheus 做爲監控和性能指標信息存儲方案,使用 Grafana 做爲可視化組件進行展現。(參考今日頭條的方案) 監控的原理:分佈式

1. 在 client 端程序中定製須要的 Metric高併發

2. Push GateWay 來接收 Client Push 上來的數據,統一供 Prometheus 主服務器抓取。

3. AlertManager 用來實現報警機制,使用 Grafana 來進行展現

 

TiDB的成功案例

 目前今日頭條,摩拜單車、鳳凰網、遊族網絡等公司採用了TIDB數據庫。 
這些企業採用TIDB的主要緣由包括:

1. 兼容mysql

2. 分佈式存儲,擴展能力強。

3. 支持OLTP

4. 能夠直接利用TiSpark作實時分析。

5. 穩定的高可用性

6. 無阻塞在線DDL

 

採用TIDB的公司需求具備的共同點:

1. 擁有數億以上記錄的數據,但願在保持海量數據存儲能力的前提下保留良好的OLTP性能和QPS性能

2. 但願數據庫擁有實時計算的能力

 

整理自:

https://cloud.tencent.com/developer/news/206280

https://blog.csdn.net/songjianyue12345/article/details/79763022

相關文章
相關標籤/搜索