2022 年 8 月 13 日(ri),TDengine 3.0 正(zheng)式發布了(le)!經(jing)過(guo)一(yi)年多的努力研(yan)發,我們(men)終于可以驕傲(ao)地宣布這一(yi)消息。
這是一次重磅升級,TDengine 3.0 是真正的云原生時序數據庫(Time Series Database,TSDB)。
我們先(xian)來整體看一下 3.0 的幾大(da)亮點:
- 可以支持 10 億個設備采集的數據、100 個節點
- 支持存儲與計算分離,引入計算節點,并重構了整個計算引擎
- 完善并優化了對消息隊列、流式計算和緩存的支持,引入事件驅動的流式計算
TDengine 面市(shi)以來(lai),從 1.0 到 2.0,從核心功(gong)能開(kai)源(yuan)(yuan)到集(ji)群功(gong)能開(kai)源(yuan)(yuan),得到了(le)(le)大(da)量(liang)商業客戶和社區用戶的(de)高度認(ren)可,全(quan)球(qiu)(qiu)安裝的(de) TDengine 運行實例數已經接近 14 萬,每天有超過 1000 人次克隆代碼,在全(quan)球(qiu)(qiu)開(kai)發者(zhe)中產生了(le)(le)一定(ding)的(de)影響力。日(ri)常(chang)有大(da)量(liang)的(de)社區開(kai)發者(zhe)基(ji)于自(zi)己的(de)業務(wu)需(xu)求,提出 issue,貢獻(xian)功(gong)能,社區非常(chang)活躍。
作為(wei)一款開源(yuan)的時(shi)序數據庫產(chan)品,TDengine 已經(jing)廣(guang)泛應用(yong)于(yu)物(wu)聯網(wang)、工業互聯網(wang)、車聯網(wang)、金(jin)融、IT 運維(wei)監(jian)控等場景。目前已經(jing)有(you)大量的企(qi)業客戶和社區(qu)用(yong)戶將(jiang) TDengine 部署(shu)在(zai)其核心業務場景中。用(yong)戶場景越(yue)多(duo),TDengine 得到的用(yong)戶需(xu)求和反(fan)饋越(yue)多(duo),正是這些(xie)需(xu)求和反(fan)饋在(zai)推動(dong)著 TDengine 不斷(duan)演進。
經常關注 TDengine 的用戶應該都很熟悉了,我們已經發布了上百篇用戶案例,這都(dou)(dou)是(shi)企業客戶和開源用戶的第(di)一手(shou)實踐經(jing)驗(yan)。有心的讀者都(dou)(dou)會發現,在每篇用戶案例的末尾(wei),用戶也(ye)毫不諱言在使用 TDengine 過(guo)程(cheng)中遇到(dao)的問題(ti),更是(shi)提(ti)出了對 TDengine 的更多期(qi)待。這都(dou)(dou)是(shi) TDengine 優化迭(die)代的動力。
下面我們詳細(xi)看一下 TDengine 3.0 的核(he)心功能。
1. 云原生
TDengine 3.0 可以充分利用云(yun)計算平臺以及(ji)分布式系(xi)統的(de)優勢。作為一(yi)款云(yun)原生(sheng),而不只(zhi)是(shi)(shi)能在云(yun)上運行(xing)的(de)時序(xu)數(shu)據庫(ku),TDengine 3.0 具(ju)備云(yun)原生(sheng)數(shu)據庫(ku)的(de)幾(ji)大特點(dian):水(shui)平擴展(zhan)性(xing)(Scalability)、彈性(xing)(Elasticity)、韌(ren)性(xing)(Resiliency)、可觀測性(xing)(Observability)以及(ji)運維自動化(Automation)。我們就結合 TDengine 的(de)邏輯(ji)架構,依次看看它(ta)是(shi)(shi)如何實現(xian)這幾(ji)大特點(dian)的(de)。

水平擴展性(Scalability)
TDengine 通過數據采集點和時間兩個維度對大數據進行切分,從而實現了水平擴展能力,既支持分片,也支持分區。通過將每個數據采集點的元數據分布在各個 vnode 里,而不是存放在中心點,我們解決了困擾時序數據庫的高基數(High Cardinality)問(wen)題。TDengine 具有超強的(de)水平擴展能(neng)(neng)力(li),為(wei)獲得(de)更多的(de)數據處理能(neng)(neng)力(li),只需要加(jia)入更多的(de)數據節點即(ji)可(ke)。通過(guo)測試,我(wo)們(men)可(ke)以驗證,在(zai) 10 億時(shi)間線,100 個數據節點的(de)情況(kuang)下(xia),整(zheng)個 TDengine 性能(neng)(neng)還能(neng)(neng)得(de)到很好的(de)保證。
彈性(Elasticity)
作(zuo)為(wei)一個(ge)云原生(sheng)數據庫,TDengine 3.0 支(zhi)持(chi) scale up / scale down。為(wei)支(zhi)持(chi)存(cun)儲的(de)彈性(xing),如果插入的(de)延(yan)時(shi)已經超過一定閾值或者性(xing)能不(bu)夠(gou),TDengine 會(hui)將(jiang)一個(ge) vnode 拆(chai)分成(cheng)兩個(ge),從而分配更多(duo)的(de)系統資(zi)源(yuan)(yuan)給數據寫入操作(zuo)。另一方面,在能夠(gou)保證延(yan)時(shi)與(yu)性(xing)能的(de)情況下,TDengine 也可以把多(duo)個(ge) vnode 合并成(cheng)一個(ge),以節省系統資(zi)源(yuan)(yuan)。
為支持(chi)計(ji)算的(de)(de)(de)彈性(xing),TDengine 3.0 引入了計(ji)算節點(dian) qnode。對于(yu)(yu)簡單的(de)(de)(de)查詢,比如獲得某張表的(de)(de)(de)原(yuan)始數據或(huo)卷曲(qu)數據(rollup data),對應的(de)(de)(de) vnode 將(jiang)完成所(suo)有的(de)(de)(de)操(cao)作,無(wu)需 qnode 的(de)(de)(de)參與。但對于(yu)(yu)一個需要(yao)排序、分組或(huo)其他需要(yao)計(ji)算資源(yuan)的(de)(de)(de)操(cao)作,查詢的(de)(de)(de)執行過程(cheng)中(zhong),一個或(huo)多個 qnode 將(jiang)被調用(yong)。在具體的(de)(de)(de)部(bu)署中(zhong),qnode 可以運行在容器里,它的(de)(de)(de)啟停完全由 mnode 根據系統負載情(qing)況決(jue)定。
通過(guo)引入 qnode,TDengine 3.0 成為一(yi)個理想的時(shi)序(xu)數據(ju)分析(xi)平臺,包(bao)括實時(shi)數據(ju)分析(xi)和(he)批分析(xi)。
韌性(Resiliency)
TDengine 的韌性是通過其高(gao)可(ke)靠與(yu)高(gao)可(ke)用(yong)設計來(lai)實現(xian)(xian)的。TDengine 采(cai)用(yong) Database 實現(xian)(xian)中傳統的方法 WAL(Write Ahead Log) 來(lai)保(bao)證數據(ju)的高(gao)可(ke)靠。TDengine 通過多副(fu)本以及 RAFT 一(yi)致性協議,保(bao)證 vnode 和 mnode 的高(gao)可(ke)用(yong)性。
可觀測性(Observability)
TDengine 會(hui)采集各種指(zhi)標來監(jian)測(ce)自(zi)身的(de)運(yun)行是否(fou)正常,這(zhe)些(xie)指(zhi)標包括 CPU、內存(cun)、磁盤、流量、請求(qiu)次(ci)數(shu)、延時等。我們(men)提供了 Grafana 的(de)看板 TDinsight,以實現這(zhe)些(xie)指(zhi)標的(de)可視化與報(bao)警(jing)。
TDengine 還有一(yi)個(ge)配(pei)套(tao)模塊 taosKeeper,能夠將采集(ji)的(de)指(zhi)標發(fa)送到(dao)其他監測(ce)工具(ju)(如(ru) Prometheus),便于將對 TDengine 的(de)監測(ce)集(ji)成(cheng)到(dao)已有的(de)可觀(guan)測(ce)系統。
運維自動化(Automation)
TDengine 可以用二進制包或 Docker 鏡像進行安(an)裝,也支持(chi)通過 Kubernetes 來部(bu)署和管理集群(qun)。其集群(qun)的(de)管理完全可以通過腳本自(zi)動化進行,讓(rang)運營和維護(hu)變得簡(jian)單。
2. 極簡的時序數據平臺
熟悉(xi) TDengine 的用戶(hu),可(ke)能已經使(shi)用過其連續查詢、緩存和消息隊(dui)列等(deng)功(gong)能。在 3.0 中(zhong),我們又重(zhong)新設計并優化了(le)相關功(gong)能。
特(te)別(bie)是流(liu)(liu)(liu)式計(ji)(ji)算(suan)(suan)(suan),除連(lian)續(xu)查詢(xun)外(wai),3.0 還支(zhi)持(chi)事件驅動(dong)的(de)(de)流(liu)(liu)(liu)計(ji)(ji)算(suan)(suan)(suan),而且采用 SQL 語(yu)法,支(zhi)持(chi)自定(ding)義函(han)數(shu),讓流(liu)(liu)(liu)計(ji)(ji)算(suan)(suan)(suan)的(de)(de)學(xue)習(xi)成(cheng)本幾乎為(wei)(wei)零(ling)。例如,我們可以用如下(xia)語(yu)句創建流(liu)(liu)(liu)式計(ji)(ji)算(suan)(suan)(suan),它(ta)會自動(dong)創建名為(wei)(wei) avg_vol 的(de)(de)超級表(biao),此(ci)流(liu)(liu)(liu)計(ji)(ji)算(suan)(suan)(suan)以一分鐘(zhong)為(wei)(wei)時間窗口、30 秒為(wei)(wei)前向增量(liang)統計(ji)(ji)這些電(dian)表(biao)的(de)(de)平均電(dian)壓,并將來自 meters 表(biao)的(de)(de)數(shu)據(ju)的(de)(de)計(ji)(ji)算(suan)(suan)(suan)結(jie)果寫(xie)入 avg_vol 表(biao),不(bu)同 partition 的(de)(de)數(shu)據(ju)會分別(bie)創建子(zi)表(biao)并寫(xie)入不(bu)同子(zi)表(biao)。
CREATE STREAM avg_vol_s INTO avg_vol AS
SELECT _wstartts, count(*), avg(voltage) FROM meters PARTITION BY tbname INTERVAL(1m) SLIDING(30s);
消息隊列(lie)方面(mian),可(ke)指定各種過濾條件,應(ying)用可(ke)以僅(jin)僅(jin)訂閱滿足(zu)條件的數(shu)據(ju),而(er)且對(dui)外提供的 API 與 Kafka 類似(si),簡單易用。
在時(shi)序數據處理平(ping)臺的(de)通用設計中,邏(luo)輯(ji)圖一般如下所示:

而(er)通(tong)過(guo)對緩存、流式(shi)計算、消息隊列的支持(chi),采用 TDengine 的時序數據處理(li)系統,不(bu)再需要集(ji)成 Kafka、Redis、Spark 和(he) Flink 等軟件,技術(shu)架構(gou)將(jiang)大為(wei)(wei)簡化,部署、運營維護成本(ben)將(jiang)大為(wei)(wei)降低。邏輯結構(gou)可以直接簡化為(wei)(wei):

由此可(ke)見,TDengine 不只是一(yi)個時(shi)序數(shu)據庫,還是一(yi)個極(ji)簡的時(shi)序數(shu)據處(chu)理平臺。
3. 便捷的數據分析能力
TDengine 3.0 重新設(she)計(ji)(ji)了計(ji)(ji)算引擎,支(zhi)持(chi)標準 SQL,支(zhi)持(chi)嵌(qian)套查詢,支(zhi)持(chi)自定(ding)義函數(shu),支(zhi)持(chi) Information Schema 系統數(shu)據庫(ku);針對時(shi)序數(shu)據的(de)處(chu)理進行擴展,提供累計(ji)(ji)求和、時(shi)間加權平(ping)均(jun)、移動平(ping)均(jun)、變化(hua)率、session/state 窗口等眾(zhong)多(duo)時(shi)序數(shu)據分(fen)(fen)析功能;通(tong)(tong)過(guo)(guo)標簽快(kuai)速索(suo)引,通(tong)(tong)過(guo)(guo)分(fen)(fen)區、分(fen)(fen)片技(ji)術,通(tong)(tong)過(guo)(guo)計(ji)(ji)算節點的(de)彈性伸(shen)縮,支(zhi)持(chi)對海量時(shi)序數(shu)據的(de)多(duo)維度的(de)高(gao)效聚合分(fen)(fen)析。
有了(le)新的計算引(yin)擎(qing)的加持(chi),特別是計算與存儲的分離的支持(chi),TDengine 不僅能實時地(di)處(chu)理(li)數據的寫入(ru)和(he)查詢,也能作(zuo)為強大的時序數據分析工具。
更多細(xi)節,可以參閱相關說明:。
借助(zhu) TDengine 3.0 的云原生能力(li),用(yong)戶可以(yi)更方便地利用(yong)云平臺的能力(li),簡(jian)化(hua)(hua)部(bu)署和(he)維(wei)護(hu),進一步降(jiang)本增(zeng)效;極簡(jian)的時序數(shu)據平臺和(he)強(qiang)大的分析功能,也能幫助(zhu)用(yong)戶簡(jian)化(hua)(hua)業務架構、簡(jian)化(hua)(hua)應(ying)用(yong)設計,降(jiang)低系統的維(wei)護(hu)成本,提升處理效率。
架(jia)構升級,先(xian)人(ren)一(yi)步(bu),趕快點擊,感受 TDengine 3.0 帶來的全新(xin)體驗吧(ba)。


























