溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TiDB簡介與整體架構

發(fā)布時間:2020-08-07 14:40:13 來源:ITPUB博客 閱讀:196 作者:tangyunoracle 欄目:數(shù)據(jù)庫
---描述得很牛逼,有待驗證

TiDB 簡介

TiDB 是 PingCAP 公司受 Google Spanner / F1 論文啟發(fā)而設計的開源分布式 NewSQL 數(shù)據(jù)庫。

TiDB 具備如下 NewSQL 核心特性:

  • SQL支持(TiDB 是 MySQL 兼容的)
  • 水平彈性擴展(吞吐可線性擴展)
  • 分布式事務
  • 跨數(shù)據(jù)中心數(shù)據(jù)強一致性保證
  • 故障自恢復的高可用
  • 海量數(shù)據(jù)高并發(fā)實時寫入與實時查詢(HTAP 混合負載)

TiDB 的設計目標是 100% 的 OLTP 場景和 80% 的 OLAP 場景,更復雜的 OLAP 分析可以通過 TiSpark 項目來完成。

TiDB 對業(yè)務沒有任何侵入性,能優(yōu)雅的替換傳統(tǒng)的數(shù)據(jù)庫中間件、數(shù)據(jù)庫分庫分表等 Sharding 方案。同時它也讓開發(fā)運維人員不用關注數(shù)據(jù)庫 Scale 的細節(jié)問題,專注于業(yè)務開發(fā),極大的提升研發(fā)的生產(chǎn)力。

TiDB 整體架構

要深入了解 TiDB 的水平擴展和高可用特點,首先需要了解 TiDB 的整體架構。

TiDB簡介與整體架構

TiDB 集群主要分為三個組件:

TiDB Server

TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,并通過 PD 找到存儲計算所需數(shù)據(jù)的 TiKV 地址,與 TiKV 交互獲取數(shù)據(jù),最終返回結果。 TiDB Server 是無狀態(tài)的,其本身并不存儲數(shù)據(jù),只負責計算,可以無限水平擴展,可以通過負載均衡組件(如LVS、HAProxy 或 F5)對外提供統(tǒng)一的接入地址。

PD Server

Placement Driver (簡稱 PD) 是整個集群的管理模塊,其主要工作有三個: 一是存儲集群的元信息(某個 Key 存儲在哪個 TiKV 節(jié)點);二是對 TiKV 集群進行調(diào)度和負載均衡(如數(shù)據(jù)的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務 ID。

PD 是一個集群,需要部署奇數(shù)個節(jié)點,一般線上推薦至少部署 3 個節(jié)點。

TiKV Server

TiKV Server 負責存儲數(shù)據(jù),從外部看 TiKV 是一個分布式的提供事務的 Key-Value 存儲引擎。存儲數(shù)據(jù)的基本單位是 Region,每個 Region 負責存儲一個 Key Range (從 StartKey 到 EndKey 的左閉右開區(qū)間)的數(shù)據(jù),每個 TiKV 節(jié)點會負責多個 Region 。TiKV 使用 Raft 協(xié)議做復制,保持數(shù)據(jù)的一致性和容災。副本以 Region 為單位進行管理,不同節(jié)點上的多個 Region 構成一個 Raft Group,互為副本。數(shù)據(jù)在多個 TiKV 之間的負載均衡由 PD 調(diào)度,這里也是以 Region 為單位進行調(diào)度。

核心特性

水平擴展

無限水平擴展是 TiDB 的一大特點,這里說的水平擴展包括兩方面:計算能力和存儲能力。TiDB Server 負責處理 SQL 請求,隨著業(yè)務的增長,可以簡單的添加 TiDB Server 節(jié)點,提高整體的處理能力,提供更高的吞吐。TiKV 負責存儲數(shù)據(jù),隨著數(shù)據(jù)量的增長,可以部署更多的 TiKV Server 節(jié)點解決數(shù)據(jù) Scale 的問題。PD 會在 TiKV 節(jié)點之間以 Region 為單位做調(diào)度,將部分數(shù)據(jù)遷移到新加的節(jié)點上。所以在業(yè)務的早期,可以只部署少量的服務實例(推薦至少部署 3 個 TiKV, 3 個 PD,2 個 TiDB),隨著業(yè)務量的增長,按照需求添加 TiKV 或者 TiDB 實例。

高可用

高可用是 TiDB 的另一大特點,TiDB/TiKV/PD 這三個組件都能容忍部分實例失效,不影響整個集群的可用性。下面分別說明這三個組件的可用性、單個實例失效后的后果以及如何恢復。

  • TiDB

    TiDB 是無狀態(tài)的,推薦至少部署兩個實例,前端通過負載均衡組件對外提供服務。當單個實例失效時,會影響正在這個實例上進行的 Session,從應用的角度看,會出現(xiàn)單次請求失敗的情況,重新連接后即可繼續(xù)獲得服務。單個實例失效后,可以重啟這個實例或者部署一個新的實例。

  • PD

    PD 是一個集群,通過 Raft 協(xié)議保持數(shù)據(jù)的一致性,單個實例失效時,如果這個實例不是 Raft 的 leader,那么服務完全不受影響;如果這個實例是 Raft 的 leader,會重新選出新的 Raft leader,自動恢復服務。PD 在選舉的過程中無法對外提供服務,這個時間大約是3秒鐘。推薦至少部署三個 PD 實例,單個實例失效后,重啟這個實例或者添加新的實例。

  • TiKV

    TiKV 是一個集群,通過 Raft 協(xié)議保持數(shù)據(jù)的一致性(副本數(shù)量可配置,默認保存三副本),并通過 PD 做負載均衡調(diào)度。單個節(jié)點失效時,會影響這個節(jié)點上存儲的所有 Region。對于 Region 中的 Leader 結點,會中斷服務,等待重新選舉;對于 Region 中的 Follower 節(jié)點,不會影響服務。當某個 TiKV 節(jié)點失效,并且在一段時間內(nèi)(默認 10 分鐘)無法恢復,PD 會將其上的數(shù)據(jù)遷移到其他的 TiKV 節(jié)點上。

-----------------------------------End[Tony.Tang]2018.3.8-----------------------------------------------------------------
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI