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

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

小T

2022-07-16 / ,

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

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

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

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

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

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

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

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

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