一、tidb介紹


一、Tidb是什么?

Tidb是一個分布式、強一致、具有水平擴展能力的關系型數據庫。

 

關鍵特性:

  水平擴展

  高可用

  ACID事務

  SQL支持

 

二、Tidb整體架構

 

 

 

 組件作用:

  個人理解:

  Tidb :無狀態的計算引擎(通俗的講就是和外面的應用和客戶端做交互,通過MySQL的協議接受外面的請求,對於外面的用戶看到的就是一個MySQL,可以通過Navicat直接連接)

  官方描述:

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

  個人理解:

  TiKV :分布式且支持事務的分布式存儲引擎(真正存儲數據的地方,接受sql發來的請求)

  官方描述:

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

  個人理解:

  PD :集群的管理節點

  官方描述:

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

PD 是一個集群,需要部署奇數個節點,一般線上推薦至少部署3個節點。PD在選舉的過程中無法對外提供服務,這個時間大約是3

存儲:

任何持久化的存儲引擎,數據終歸要保存在磁盤上,TiKV 也不例外。但是 TiKV 沒有選擇直接向磁盤上寫數據,而是把數據保存在 RocksDB 中,具體的數據落地由 RocksDB 負責。這個選擇的原因是開發一個單機存儲引擎工作量很大,特別是要做一個高性能的單機引擎,需要做各種細致的優化,而 RocksDB 是由 Facebook 開源的一個非常優秀的單機 KV 存儲引擎,可以滿足 TiKV 對單機引擎的各種要求。這里可以簡單的認為 RocksDB 是一個單機的持久化 Key-Value Map

數據容災:

 RocksDB解決了數據落地問題,但是沒有解決高可用的場景,所以tidb使用Raft進行多副本復制

Raft特性:

  多數派寫入(假設Raft講數據復制三份,每一次寫入都要保證兩個副本寫入成功,才對客戶端返回成功,這就算有一個副本丟掉,還有一個副本有最新的數據)

  強leader

  多leader

  成員變更

有了Raft之后,就可以在不同的機器、機架、數據中心之間復制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM