隨著物聯(lián)網(wǎng)、車聯(lián)網(wǎng)等領(lǐng)域的快速發(fā)展,企業(yè)所面臨的數(shù)據(jù)采集量呈爆炸式增長,這對 IT 基礎(chǔ)設(shè)施和數(shù)據(jù)庫提出了嚴(yán)峻挑戰(zhàn)。傳統(tǒng)單機版數(shù)據(jù)庫逐漸無法應(yīng)對高并發(fā)的數(shù)據(jù)寫入和復(fù)雜的查詢需求。因此,底層數(shù)據(jù)庫必須具備水平擴展能力,以確保其能夠在數(shù)據(jù)量持續(xù)增長的情況下高效運行。
然而,目前市場上大多數(shù)開源時序數(shù)據(jù)庫的集群功能并未完全開源。InfluxDB 的集群能力封閉于企業(yè)版,這迫使企業(yè)使用開源單機版的同時,需投入大量資源自建 Proxy 來實現(xiàn)數(shù)據(jù)的分片和查詢聚合,增加了系統(tǒng)開發(fā)和維護的成本。相比之下,TDengine 在 2020 年 8 月正式將集群功能開源,在解決大規(guī)模數(shù)據(jù)處理需求方面走在了行業(yè)前列。
InfluxDB 開源版本的局限性
開源版 InfluxDB 的局限在于其集群功能僅在企業(yè)版中提供,這給眾多中小企業(yè)帶來困難。為了應(yīng)對高并發(fā)的數(shù)據(jù)需求,這些企業(yè)通常采取如下折衷方案:
- 自建 Proxy 對數(shù)據(jù)進行分片,解決數(shù)據(jù)寫入問題;
- 但在數(shù)據(jù)查詢時,涉及多節(jié)點數(shù)據(jù)聚合的復(fù)雜性,Proxy 需要承擔(dān)聚合計算,開發(fā)成本和運維壓力極大。
一些企業(yè)為簡化流程,轉(zhuǎn)向了 OpenTSDB,因為它的分布式版本完全開源。然而,OpenTSDB 基于 HBase 作為底層存儲,帶來了復(fù)雜的安裝與維護流程,同時其存儲效率和查詢性能遠(yuǎn)低于理想水平。雖然 OpenTSDB 的線性擴展能力值得肯定,但因其系統(tǒng)復(fù)雜性和性能限制,它并非優(yōu)秀的選擇。
至數(shù)物聯(lián)網(wǎng) IoT 平臺的技術(shù)改造實踐正是對此的有力證明:http://www.fjzmyy.cn/tdengine-user-cases/5007.html
TDengine 的集群能力:從設(shè)計之初即面向水平擴展
為滿足不斷增長的數(shù)據(jù)處理需求,TDengine 從誕生之初就以水平擴展和高可用為核心設(shè)計理念,采用分布式架構(gòu),基于單個硬件、軟件系統(tǒng)不可靠,基于任何單臺計算機都無法提供足夠計算能力和存儲能力處理海量數(shù)據(jù)的假設(shè)進行集群設(shè)計,具備強大的水平擴展能力。同時,通過節(jié)點虛擬化并輔以負(fù)載均衡技術(shù),TDengine 能最高效率地利用異構(gòu)集群中的計算和存儲資源降低硬件投資。
通過創(chuàng)新的設(shè)計,TDengine 集群具備以下關(guān)鍵特性:
- 數(shù)據(jù)分片與水平擴展
TDengine 通過虛擬節(jié)點(vnode)技術(shù),將集群內(nèi)的多個物理節(jié)點劃分為多個 vnode。每個 vnode 存儲特定的數(shù)據(jù)采集點的數(shù)據(jù),一個數(shù)據(jù)采集點的數(shù)據(jù)只存放在一個 vnode 內(nèi)。這一設(shè)計確保:
- 寫入時的水平擴展:客戶端可以將數(shù)據(jù)直接寫入對應(yīng)的 vnode,集群節(jié)點數(shù)越多,系統(tǒng)的吞吐能力越強。
- 查詢時的水平擴展:對于聚合查詢,首先在各個 vnode 內(nèi)完成初步聚合,客戶端再進行二次聚合。這種分布式計算模型降低了查詢聚合的復(fù)雜度。
- 數(shù)據(jù)分區(qū)與多級存儲
除了分片,TDengine 還支持按時間段對數(shù)據(jù)進行分區(qū),如按天、按周等用戶定義的時間范圍。分區(qū)后的數(shù)據(jù)具有以下優(yōu)勢:
- 查詢時可快速定位到對應(yīng)時間段的數(shù)據(jù)文件,提升查詢效率;
- 方便實現(xiàn)數(shù)據(jù)保留策略,超過保留時間的數(shù)據(jù)直接刪除對應(yīng)文件即可;
- 支持冷熱數(shù)據(jù)分離,減少存儲成本。
- 高可用設(shè)計與自動故障轉(zhuǎn)移
TDengine 通過虛擬節(jié)點組技術(shù)保障系統(tǒng)高可用性。虛擬節(jié)點組內(nèi)的數(shù)據(jù)采用 Leader-Follower 模式同步:Leader 負(fù)責(zé)處理讀寫請求,并將數(shù)據(jù)同步到多個 Follower 節(jié)點。當(dāng) Leader 節(jié)點發(fā)生故障時,系統(tǒng)會自動選舉新的 Leader,確保數(shù)據(jù)訪問不中斷,并實現(xiàn)故障轉(zhuǎn)移。這種架構(gòu)保證了數(shù)據(jù)的一致性與冗余,增強了系統(tǒng)的高可用性和容錯能力。
TDengine 集群可以容納單個、多個甚至幾千個數(shù)據(jù)節(jié)點。應(yīng)用只需要向集群中任何一個數(shù)據(jù)節(jié)點發(fā)起連接即可。這種設(shè)計簡化了應(yīng)用程序與集群之間的交互過程,提高了系統(tǒng)的可擴展性和易用性。
TDengine 集群 vs. InfluxDB 集群
為了讓大家更方便地進行應(yīng)用,在 2020 年 TDengine 便把集群版功能進行了開源,打破了 InfluxDB 將集群能力封閉在企業(yè)版的壁壘。開源集群意味著:
- 用戶無需支付高昂的許可費用即可享受全功能的分布式數(shù)據(jù)庫支持;
- 社區(qū)和企業(yè)可以自由探索 TDengine 的集群架構(gòu),實現(xiàn)個性化開發(fā)和優(yōu)化;
- 降低了開發(fā)者的使用門檻,促進了更廣泛的生態(tài)系統(tǒng)發(fā)展。
與 InfluxDB 形成鮮明對比的是,TDengine 的開源集群功能不僅適用于寫入,還能處理復(fù)雜的查詢聚合任務(wù),展現(xiàn)了出色的水平擴展能力。這種設(shè)計使 TDengine 特別適用于需要同時處理海量實時數(shù)據(jù)寫入和復(fù)雜歷史數(shù)據(jù)分析的場景,如物聯(lián)網(wǎng)、工業(yè)監(jiān)控和智慧城市等。相比之下,InfluxDB 在處理復(fù)雜查詢時常面臨性能下降和資源瓶頸,限制了系統(tǒng)的擴展性。
如果你也想親身體驗 TDengine 的強大集群水平擴展能力,不妨動手試試!我們?yōu)槟銣?zhǔn)備了詳細(xì)的指導(dǎo)手冊:https://docs.taosdata.com/operation/deployment/,助你輕松完成部署和配置。該手冊涵蓋了手動部署、Docker 部署、Kubernetes 部署三種部署方式,讓你快速上手并充分發(fā)揮 TDengine 集群的性能和優(yōu)勢。
結(jié)語
在時序數(shù)據(jù)管理領(lǐng)域,TDengine 的集群功能為企業(yè)提供了強大的水平擴展和高可用能力。相比于 InfluxDB 封閉的企業(yè)版集群,TDengine 的開源集群打破了軟件授權(quán)的桎梏,讓用戶能夠以更低成本應(yīng)對數(shù)據(jù)爆發(fā)式增長的挑戰(zhàn)。同時,TDengine 的分片、分區(qū)與虛擬節(jié)點技術(shù),使其在高效數(shù)據(jù)管理和復(fù)雜查詢性能上遙遙領(lǐng)先。對于那些追求系統(tǒng)擴展性、易維護性和高性價比的企業(yè)來說,TDengine 已成為更具吸引力的選擇。



互聯(lián)網(wǎng).png)



-1.png)







證.png)


伙伴.png)
伙伴.png)
伙伴.png)



