六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

作為一款時序數(shù)據(jù)庫,TDengine 是如何實現(xiàn)并開源其分布式集群功能?

小T

2022-07-16 / ,

隨著物聯(lián)網(wǎng)、車聯(lián)網(wǎng)的高速發(fā)展,IT 基礎(chǔ)設施規(guī)模的增大,數(shù)據(jù)的采集量越來越大,單機是沒有辦法解決問題的,底層數(shù)據(jù)庫必須具有水平擴展能力。大部分開源的時序數(shù)據(jù)庫都不是分布式的,換句話說,就是集群版不開源,包括 InfluxDB 集群功能也只能在企業(yè)版中使用。很多企業(yè)使用的是開源時序數(shù)據(jù)庫的單機版,后續(xù)為了應對海量數(shù)據(jù)的處理,只好自己投入人力物力,在單機版的基礎(chǔ)上,開發(fā)自己的 Proxy,對數(shù)據(jù)進行分片處理。對于數(shù)據(jù)寫入,這種方法簡單而且有效。但是對于查詢,往往牽涉多個節(jié)點,那么 Proxy 就要做各種查詢的聚合,因此開發(fā)的工作量很大。

有些公司為了避免麻煩,就選用 OpenTSDB,因為它把分布式版本也開源了。從使用的角度來看,OpenTSDB 底層的存儲引擎用的是 HBase,安裝維護極為復雜,存儲壓縮性能不夠,查詢效率也很低,不是一個優(yōu)秀的產(chǎn)品。但它仍然有相當多的用戶,這唯一的原因就是由于它支持分布式,可以水平線性擴展。

TDengine 的設計是基于單個硬件、軟件系統(tǒng)不可靠,基于任何單臺計算機都無法提供足夠計算能力和存儲能力處理海量數(shù)據(jù)的假設而進行設計的。因此 TDengine 從研發(fā)的第一天起,就是按照水平擴展、高可用架構(gòu)進行設計的。通過對數(shù)據(jù)進行分區(qū)、分片,而且采用虛擬節(jié)點(vnode)技術(shù),保證系統(tǒng)的處理能力是水平擴展的。如果要增加系統(tǒng)的處理能力,只需要增加新的節(jié)點即可。

更好的是,和 InfluxDB集群功能閉源不同,2020年8月,TDengine 團隊將集群版開源了。
TDengine 是通過數(shù)據(jù)采集點以及時間兩個維度,對大數(shù)據(jù)進行切分,實現(xiàn)水平擴展的。

作為一款時序數(shù)據(jù)庫,TDengine 是如何實現(xiàn)并開源其分布式集群功能? - TDengine Database 時序數(shù)據(jù)庫

分片:在 TDengine Database 的設計與實現(xiàn)里,一個集群有多個節(jié)點,每個節(jié)點可以有一個或多個虛擬節(jié)點(vnode),每個虛擬節(jié)點里存儲了一定數(shù)量的數(shù)據(jù)采集點的數(shù)據(jù),而一個數(shù)據(jù)采集點的數(shù)據(jù)永遠只存放在一個 vnode 里。這樣如果有很多數(shù)據(jù)采集點,這些數(shù)據(jù)采集點的數(shù)據(jù)將會分布在多個 vnode 上,分布在多個節(jié)點里。數(shù)據(jù)寫入時,TDengine Database 的客戶端將要寫入的數(shù)據(jù)直接寫入對應的 vnode,從而實現(xiàn)寫入的水平擴展。對于單個數(shù)據(jù)采集點數(shù)據(jù)的查詢,毫無疑問,是水平擴展的,節(jié)點越多,吞吐率就越大。對于聚合查詢,查詢請求將先發(fā)送到對應的 vnode 里,vnode 先做完聚合操作,客戶端然后將來自多個 vnode 的查詢結(jié)果做第二次聚合,因為 vnode 數(shù)量有限,這樣在客戶端做的聚合查詢計算量不大,從而實現(xiàn)聚合查詢的水平擴展能力。

分區(qū):除將數(shù)據(jù)分片之外,TDengine 還將一個 vnode 里存儲的時序數(shù)據(jù)按照時間段進行切分。每個時間段的數(shù)據(jù)都一定保存在一起,不同時間段的數(shù)據(jù)不會有交集,時間段可以是一天,幾天,一周,由用戶自己定義。按照時間段切分時序數(shù)據(jù)有很多好處,查詢數(shù)據(jù)時,根據(jù)時間段,可以直接定位要查找的文件,從而加快查詢速度。另外一方面,可以高效地實現(xiàn)數(shù)據(jù)保留策略。超過最長保留時間的數(shù)據(jù),直接刪除一個時間段對應的文件即可。而且按照時間段切分數(shù)據(jù),還可以方便實現(xiàn)多級存儲,冷熱數(shù)據(jù)放在不同存儲介質(zhì)上,進一步降低存儲成本。

TDengine 還通過虛擬節(jié)點組技術(shù)來提供系統(tǒng)的高可用。不同物理節(jié)點上的 vnode 可以形成一個虛擬節(jié)點組,這個虛擬節(jié)點組里的數(shù)據(jù)是通過 Master-Slave 來進行同步的,來保證這個虛擬節(jié)點組內(nèi)數(shù)據(jù)的一致性。數(shù)據(jù)寫入只能在 master 進行,但查詢可以在 master 和 slave 上同時進行。如果 Master 出現(xiàn)故障,系統(tǒng)將自動選主,這樣來保證系統(tǒng)的高可用,不會由于某臺機器宕機,而無法對外提供服務。

關(guān)于集群的具體使用,請看《集群管理》。