和mysql不同,tidb是乙個分布式的資料庫而不是單個程序,所以整個tidb是由以下角色組成: tikv, pd, tidb, tispark。每個角色都是部署在多台機器上的程序組成的集群。
tikv負責資料的儲存,對外而言,它就是乙個提供key-value儲存的引擎。但它儲存的並不是離散的key,而在乙個範圍內的key,這個範圍內的key-value是儲存的基本單元,稱為region。
對不同的資料型別,儲存的資料格式如下:
資料型別
keyvalue
行記錄表id+行id
行資料唯一索引或主鍵
表id+索引id+索引值
行id非唯一索引
表id+索引id+索引值+行id
空 而tikv集群上的單節點上真正負責儲存的是facebook開源的rocksdb引擎。但rocksdb自身並沒有解決單點失效的問題,tikv採用多副本的方式來解決,而實現則是在rocksdb之上封裝一層支援raft協議,以在多節點之間同步資料。僅對於同乙個region, 只有乙個leader節點接收外部對其的讀寫,其他節點只是用來做備份(即不同機器上的同乙個region 組成乙個 raft group)。
所以對外部而言,tikv可以認為是乙個可以提供無限大容量的k-v儲存服務(當磁碟空間不足時,可以比較方便地通過增加機器來拓容)。
pd全稱是placement driver,是對整個tidb集群管理進行管理的角色。它最重要的功能是儲存資料的元資料,即key和tikv中節點的對應關係。此外,負責對集群進行排程和負載均衡region遷移, region raft leader遷移),以及提供全域性唯一遞增的事務id。pd集群也是通過raft協議保證資料安全,但只有一台機器(leader)負責處理所有的操作。
tidb角色負責對外互動(mysql協議),優化sql之後,向pd獲取要讀取的key對應的tikv節點資訊,之後再向tikv上的region raft leader所在節點發起請求獲取資料,再返回客戶端。即tidb是無狀態的,不儲存任何資料。
HDFS基本架構總結
hdfs為主 從架構,主要由管理檔案系統的namenode和儲存資料的datanode組成。namenode介紹及作用 datanode介紹及作用 secondarynamenode 副本存放策略 一般來說,資料是以block儲存在datanode節點上。假如說,在datanode節點上提交檔案,那...
LTE LTE基本架構
這篇文章主要介紹lte的最基礎的架構,包括lte網路的構成,每乙個網路實體的作用以及lte網路協議棧,最後還包括對乙個lte資料流的模型的說明。這是一張非常有名的lte架構圖,從圖中可以看出,整個網路構架被分為了四個部分,包括由中間兩個框框起來的e utran部分和epc部分,還有位於兩邊的ue和p...
MySql基本架構
mysql基本架構分為server層和儲存引擎 負責連線客戶端與server層,簡單來說就像是乙個登入認證模組,判斷使用者的身份和許可權。mysql會快取我們執行過的select語句,以key value的形式直接放在記憶體中。後續查詢如果命中快取就可以直接拿出快取的結果集而不用去執行後面的複雜操作...