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

云原生、分布式時序數(shù)據(jù)庫

云原生、分布式時序數(shù)據(jù)庫

原生數(shù)據(jù)庫(Cloud Native Database)是指充分利用云計算平臺以及分布式系統(tǒng)的優(yōu)勢而設(shè)計的數(shù)據(jù)庫。云原生數(shù)據(jù)庫提供了按照實(shí)際使用資源量來計費(fèi)的能力,以降低運(yùn)營成本。此外,它提供了快速開發(fā)原型、研發(fā)、測試以及部署新應(yīng)用的能力,可以大大縮短新應(yīng)用從設(shè)計開發(fā)到進(jìn)入市場的時間。

作為一個云原生,而不只是能在云上運(yùn)行的時序數(shù)據(jù)庫(Time Series Database),TDengine 具備云原生數(shù)據(jù)庫的幾大特點(diǎn):水平擴(kuò)展性(Scalability)、彈性(Elasticity)、韌性(Resiliency)、可觀測性(Observability)以及運(yùn)維自動化(Automation)。

在我們討論這些特性之前,可以先簡單了解一下 TDengine 的分布式設(shè)計。

分布式設(shè)計

TDengine TSDB 從研發(fā)的第一天起,就按照分布式高可靠架構(gòu)進(jìn)行設(shè)計,是支持水平擴(kuò)展的——任何單臺或多臺服務(wù)器發(fā)生硬件故障或軟件錯誤都不影響系統(tǒng)的可用性和可靠性。同時,通過節(jié)點(diǎn)虛擬化并輔以負(fù)載均衡技術(shù),TDengine TSDB 能最高效率地利用異構(gòu)集群中的計算和存儲資源,降低硬件投資。

一個完整的 TDengine TSDB 系統(tǒng)運(yùn)行在一到多個物理節(jié)點(diǎn)(一臺服務(wù)器、虛擬機(jī)或容器)上。邏輯上,它包含數(shù)據(jù)節(jié)點(diǎn)(dnode)、TDengine TSDB 應(yīng)用驅(qū)動(taosc)以及應(yīng)用(app)。系統(tǒng)中存在一到多個數(shù)據(jù)節(jié)點(diǎn),這些數(shù)據(jù)節(jié)點(diǎn)組成一個集群(cluster)。應(yīng)用通過 taosc 的 API 與 TDengine TSDB 集群進(jìn)行互動。下面對每個邏輯單元進(jìn)行簡要介紹。

云原生、分布式時序數(shù)據(jù)庫 - TDengine Database 時序數(shù)據(jù)庫

物理節(jié)點(diǎn)(pnode): pnode 是一獨(dú)立運(yùn)行、擁有自己的計算、存儲和網(wǎng)絡(luò)能力的計算機(jī),可以是安裝有 OS 的物理機(jī)、虛擬機(jī)或 Docker 容器。物理節(jié)點(diǎn)由其配置的 FQDN(Fully Qualified Domain Name)來標(biāo)識。TDengine TSDB 完全依賴 FQDN 來進(jìn)行網(wǎng)絡(luò)通訊。

數(shù)據(jù)節(jié)點(diǎn)(dnode): dnode 是 TDengine TSDB 服務(wù)器側(cè)執(zhí)行代碼 taosd 在物理節(jié)點(diǎn)上的一個運(yùn)行實(shí)例,一個工作的系統(tǒng)必須有至少一個數(shù)據(jù)節(jié)點(diǎn)。每個 dnode 包含零到多個邏輯的虛擬節(jié)點(diǎn)(vnode),但管理節(jié)點(diǎn)、彈性計算節(jié)點(diǎn)和流計算節(jié)點(diǎn)各有 0 個或 1 個邏輯實(shí)例。dnode 在集群中的唯一標(biāo)識由其 endpoint(EP)決定——由物理節(jié)點(diǎn)的 FQDN 和配置的網(wǎng)絡(luò)端口組合而成。通過配置不同的端口,一個物理節(jié)點(diǎn)可以運(yùn)行多個實(shí)例,即擁有多個 dnode。

虛擬節(jié)點(diǎn)(vnode): 為更好地支持?jǐn)?shù)據(jù)分片、負(fù)載均衡,防止數(shù)據(jù)過熱或傾斜,TDengine TSDB 引入了 vnode(虛擬節(jié)點(diǎn))的概念。每個 vnode 都是一個相對獨(dú)立的工作單元,擁有獨(dú)立的運(yùn)行線程、內(nèi)存空間和持久化存儲路徑,是時序數(shù)據(jù)存儲的基本單元。一個 vnode 包含一定數(shù)量的表(數(shù)據(jù)采集點(diǎn))的數(shù)據(jù),包括時序數(shù)據(jù)和元數(shù)據(jù)。一個 vnode 就是一個分片(shard)。當(dāng)在集群中創(chuàng)建一個新的數(shù)據(jù)庫時,系統(tǒng)會自動為該數(shù)據(jù)庫創(chuàng)建相應(yīng)的 vnode。一個 dnode 上能夠創(chuàng)建的 vnode 數(shù)量取決于該物理節(jié)點(diǎn)的硬件資源,如 CPU、內(nèi)存和存儲容量等。

管理節(jié)點(diǎn)(mnode): mnode 是集群中的核心邏輯單元,負(fù)責(zé)監(jiān)控和維護(hù)所有 dnode 的運(yùn)行狀態(tài),并在節(jié)點(diǎn)之間實(shí)現(xiàn)負(fù)載均衡。同時,管理節(jié)點(diǎn)也負(fù)責(zé)元數(shù)據(jù)(包括用戶、數(shù)據(jù)庫、超級表等)的存儲和管理,因此也稱為 MetaNode。為了提高集群的高可用性和可靠性,TDengine TSDB 集群允許有多個(最多不超過 3 個)mnode,這些 mnode 自動組成一個虛擬的 mnode 組,采用 Raft 一致性協(xié)議來確保數(shù)據(jù)的一致性和操作的可靠性。

計算節(jié)點(diǎn)(qnode): qnode 是集群中負(fù)責(zé)執(zhí)行查詢計算任務(wù)的虛擬邏輯單元。為了提高查詢性能和并行處理能力,集群中可以配置多個 qnode,這些 qnode 在整個集群范圍內(nèi)共享使用。qnode 并不與特定的數(shù)據(jù)庫綁定,一個 qnode 可以同時處理來自多個數(shù)據(jù)庫的查詢?nèi)蝿?wù)。當(dāng)執(zhí)行查詢時,調(diào)度器會根據(jù)執(zhí)行計劃分配一個或多個 qnode 來共同完成任務(wù)。通過引入獨(dú)立的 qnode,TDengine TSDB 實(shí)現(xiàn)了存儲和計算的分離。

流計算節(jié)點(diǎn)(snode): snode 是集群中專門負(fù)責(zé)處理流計算任務(wù)的虛擬邏輯單元。集群中可以配置多個 snode,在整個集群范圍內(nèi)共享使用。snode 并不與特定的流綁定,一個 snode 可以同時處理多個流的計算任務(wù)。當(dāng)需要執(zhí)行流計算任務(wù)時,mnode 會調(diào)度可用的 snode 來完成。通過將流計算任務(wù)集中在 snode 中處理,TDengine TSDB 實(shí)現(xiàn)了流計算與批量計算的分離,從而提高了系統(tǒng)對實(shí)時數(shù)據(jù)的處理能力。

虛擬節(jié)點(diǎn)組(VGroup): vgroup 是由不同 dnode 上的 vnode 組成的一個邏輯單元,這些 vnode 之間采用 Raft 一致性協(xié)議確保數(shù)據(jù)一致。在 vgroup 中,寫操作只能在 leader vnode 上執(zhí)行,數(shù)據(jù)以異步復(fù)制的方式同步到其他 follower vnode,從而在多個物理節(jié)點(diǎn)上保留數(shù)據(jù)副本。vgroup 中的 vnode 數(shù)量決定了數(shù)據(jù)的副本數(shù)。利用 TDengine TSDB 的多副本特性,企業(yè)可以摒棄昂貴的硬盤陣列等傳統(tǒng)存儲設(shè)備,依然實(shí)現(xiàn)數(shù)據(jù)的高可靠性。

taosc: taosc 是 TDengine TSDB 給應(yīng)用提供的驅(qū)動程序,負(fù)責(zé)處理應(yīng)用與集群之間的接口交互,提供 C/C++ 語言原生接口,內(nèi)嵌于 JDBC、C#、Python、Go、Node.js 等多種編程語言的連接庫中。taosc 負(fù)責(zé)獲取并緩存元數(shù)據(jù),將寫入、查詢等請求轉(zhuǎn)發(fā)到正確的 dnode,并在將結(jié)果返回給應(yīng)用程序之前,執(zhí)行最后一級的聚合、排序、過濾等操作。應(yīng)用都是通過 taosc 而不是直接連接集群中的數(shù)據(jù)節(jié)點(diǎn)來與整個集群交互的。

分析節(jié)點(diǎn)(anode)與 TDgpt: anode 是 TDengine TSDB 集群中負(fù)責(zé)執(zhí)行 AI 分析任務(wù)的節(jié)點(diǎn),由時序數(shù)據(jù)分析智能體 TDgpt 驅(qū)動運(yùn)行。TDgpt 是與 TDengine TSDB 主進(jìn)程 taosd 適配的外置式分析智能體,內(nèi)置了經(jīng)典的統(tǒng)計分析模型庫(Statsmodels、Pycularity 等),內(nèi)嵌了 PyTorch/Keras 等機(jī)器學(xué)習(xí)與深度學(xué)習(xí)框架,同時通過適配方式直接調(diào)用濤思數(shù)據(jù)自研的時序數(shù)據(jù)基礎(chǔ)大模型 TDtsfm。TDgpt 由若干個無狀態(tài)的 anode 構(gòu)成,可以按需在集群中部署,也可以根據(jù)分析模型的特點(diǎn)將 anode 部署在合適的硬件環(huán)境中——例如帶有 GPU 的計算節(jié)點(diǎn)。查詢過程中,vnode 會將涉及時序數(shù)據(jù)高級分析的部分直接轉(zhuǎn)發(fā)到 anode,分析完成后將結(jié)果組裝并嵌入查詢執(zhí)行流程。通過 SQL 語句即可調(diào)用異常檢測(ANOMALY_WINDOW)、時序預(yù)測(FORECAST)、缺失數(shù)據(jù)補(bǔ)全等 AI 分析能力,無需應(yīng)用代碼做任何調(diào)整。TDgpt 還是一個開放的系統(tǒng),用戶可以根據(jù)業(yè)務(wù)需要添加自定義的分析算法,添加完成后僅通過修改 SQL 中的算法參數(shù)即可無縫使用。

水平擴(kuò)展性(Scalability)

TDengine 是通過數(shù)據(jù)采集點(diǎn)以及時間兩個維度,對大數(shù)據(jù)進(jìn)行切分,實(shí)現(xiàn)水平擴(kuò)展的,它既支持分片,也支持分區(qū)。

云原生、分布式時序數(shù)據(jù)庫 - TDengine Database 時序數(shù)據(jù)庫

分片: 在 TDengine TSDB 的設(shè)計與實(shí)現(xiàn)里,一個集群有多個數(shù)據(jù)節(jié)點(diǎn),每個數(shù)據(jù)節(jié)點(diǎn)可以有一個或多個虛擬節(jié)點(diǎn)(vnode),每個虛擬節(jié)點(diǎn)里存儲了一定數(shù)量的數(shù)據(jù)采集點(diǎn)的數(shù)據(jù),而一個數(shù)據(jù)采集點(diǎn)的時序數(shù)據(jù)和元數(shù)據(jù)永遠(yuǎn)只存放在一個 vnode 里。這樣如果有很多數(shù)據(jù)采集點(diǎn),通過一致性 Hash,這些數(shù)據(jù)采集點(diǎn)的數(shù)據(jù)將會分布在多個 vnode 上,分布在多個節(jié)點(diǎn)里。

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

高基數(shù): 在 TDengine TSDB 的設(shè)計中,每個數(shù)據(jù)采集點(diǎn)的元數(shù)據(jù)沒有存放在中心點(diǎn),而是分布在各個 vnode 里。當(dāng)應(yīng)用要將數(shù)據(jù)插入到一張表或?qū)σ粡埍碜霾樵儾僮鲿r,基于表名的 hash 值,插入或查詢請求將被直接發(fā)送到對應(yīng)的 vnode,由于沒有中心點(diǎn),不會有任何瓶頸。對于多個點(diǎn)的聚合計算,查詢的請求將被同時發(fā)往相關(guān)的 vnode,每個 vnode 都會執(zhí)行對應(yīng)的聚合操作,然后將結(jié)果返回給 taosc 或 qnode,做進(jìn)一步的聚合。

TDengine TSDB 具有超強(qiáng)的水平擴(kuò)展能力,為獲得更多的數(shù)據(jù)處理能力,只需要加入更多的數(shù)據(jù)節(jié)點(diǎn)即可。通過測試,我們可以驗(yàn)證,在 10 億時間線、100 個數(shù)據(jù)節(jié)點(diǎn)的情況下,整個 TDengine 性能還能得到很好的保證。時序數(shù)據(jù)處理里的”高基數(shù)”問題完全得到了解決。

彈性(Elasticity)

在 IoT 或 IIoT 情況下,系統(tǒng)需要快速將最新數(shù)據(jù)返回給應(yīng)用程序。作為一個云原生數(shù)據(jù)庫,TDengine 不僅提供 scale up 的能力,也提供 scale down 的能力,從而讓系統(tǒng)具有彈性。

為支持存儲的彈性,如果插入的延時已經(jīng)超過一定閾值或者性能不夠,TDengine TSDB 會將一個 vnode 拆分成兩個,從而分配更多的系統(tǒng)資源給數(shù)據(jù)寫入操作。另一方面,在能夠保證延時與性能的情況下,TDengine TSDB 也可以把多個 vnode 合并成一個,以節(jié)省系統(tǒng)資源。

為支持計算的彈性,TDengine TSDB 引入了計算節(jié)點(diǎn) qnode。對于簡單的查詢,比如獲得某張表的原始數(shù)據(jù)或卷曲數(shù)據(jù)(rollup data),對應(yīng)的 vnode 將完成所有的操作,無需 qnode 的參與。但對于一個需要排序、分組或其他需要計算資源的操作,查詢的執(zhí)行過程中,一個或多個 qnode 將被調(diào)用。在具體的部署中,qnode 可以運(yùn)行在容器里,它的啟停完全由 mnode 根據(jù)系統(tǒng)負(fù)載情況決定。

同時,流計算節(jié)點(diǎn) snode 的引入進(jìn)一步增強(qiáng)了彈性。snode 專門負(fù)責(zé)處理流計算任務(wù),與批量查詢計算分離,集群中可以配置多個 snode,mnode 會根據(jù)系統(tǒng)負(fù)載調(diào)度可用的 snode 來完成實(shí)時計算任務(wù)。如果沒有可用的 snode,流計算任務(wù)將在 vnode 中執(zhí)行,確保功能不受影響。

通過引入 qnode、snode 和 anode,TDengine TSDB 成為一個理想的時序數(shù)據(jù)分析平臺——從常規(guī)查詢、實(shí)時流計算到 AI 驅(qū)動的異常檢測與預(yù)測分析,計算資源可以獨(dú)立彈性伸縮。在云計算的環(huán)境里,計算資源是近似無限的,但又可以彈性地伸縮。

云原生、分布式時序數(shù)據(jù)庫 - TDengine Database 時序數(shù)據(jù)庫

韌性(Resilience)

TDengine TSDB 的韌性是通過其高可靠與高可用設(shè)計來實(shí)現(xiàn)的。

對于數(shù)據(jù)庫,存儲的高可靠是最高優(yōu)先級的。TDengine TSDB 采用 Database 實(shí)現(xiàn)中傳統(tǒng)的方法 WAL(Write Ahead Log)來保證即使系統(tǒng)宕機(jī),數(shù)據(jù)仍然可以恢復(fù)而不會丟失,從而實(shí)現(xiàn)數(shù)據(jù)的高可靠。在設(shè)計中,新寫入的數(shù)據(jù)總是先寫入 WAL,然后寫入內(nèi)存,轉(zhuǎn)發(fā)給其他節(jié)點(diǎn),再給應(yīng)用發(fā)回確認(rèn)。

云原生、分布式時序數(shù)據(jù)庫 - TDengine Database 時序數(shù)據(jù)庫

TDengine TSDB 通過多副本以及 RAFT 一致性協(xié)議,保證 vnode 和 mnode 的高可用性。對于元數(shù)據(jù),TDengine TSDB 采取的是強(qiáng)一致性;而對于時序數(shù)據(jù),TDengine TSDB 采取的是異步復(fù)制方式,在保證數(shù)據(jù)可靠性的同時確保時序數(shù)據(jù)的寫入效率。

在不同數(shù)據(jù)節(jié)點(diǎn)上的 vnode 可以形成一個虛擬節(jié)點(diǎn)組(VGroup)。虛擬節(jié)點(diǎn)組里,數(shù)據(jù)是通過 RAFT 協(xié)議來保證數(shù)據(jù)一致的,一般虛擬節(jié)點(diǎn)組有 3 個虛擬節(jié)點(diǎn)。數(shù)據(jù)寫入操作總是在 Leader 節(jié)點(diǎn)上進(jìn)行,但是查詢可以在 Leader 和 Follower 節(jié)點(diǎn)上同時進(jìn)行,以提升查詢能力。當(dāng) Leader 節(jié)點(diǎn)失敗,系統(tǒng)將自動選擇新的 Leader,只要虛擬節(jié)點(diǎn)組里超過半數(shù)以上的節(jié)點(diǎn)仍然工作,那么這個虛擬節(jié)點(diǎn)組就可以繼續(xù)提供數(shù)據(jù)寫入和查詢操作,從而保證系統(tǒng)的高可用。

對于 mnode,為保證其高可用,整個集群會部署最多 3 個 mnode,這些 mnode 形成一個虛擬節(jié)點(diǎn)組,它們之間的數(shù)據(jù)一致性通過 RAFT 來實(shí)現(xiàn),而且是強(qiáng)一致。只要超過半數(shù)的 mnode 工作,mnode 就可對外服務(wù)。

可觀測性(Observability)

TDengine TSDB 采集了各種指標(biāo)來監(jiān)測系統(tǒng)是否運(yùn)行正常,這些指標(biāo)包括 CPU、內(nèi)存、磁盤、流量、請求次數(shù)、延時等。它提供了 Grafana 的看板 TDinsight,以實(shí)現(xiàn)這些指標(biāo)的可視化與報警。關(guān)于更多 TDinsight 的信息,請看文檔。

云原生時序數(shù)據(jù)庫-TDengine Database TDinsight-1-cluster-status

TDengine TSDB 還提供了一個模塊 taosKeeper,它能夠?qū)⒉杉闹笜?biāo)發(fā)送到其他監(jiān)測工具,比如 Prometheus,這樣便于將 TDengine 的監(jiān)測集成到已有的可觀測系統(tǒng)。

此外,TDengine TSDB 提供了可視化管理工具 taosExplorer,用戶可以通過瀏覽器直觀地查看數(shù)據(jù)庫、超級表、子表等信息,執(zhí)行 SQL 查詢,管理數(shù)據(jù)寫入任務(wù),以及查看集群的運(yùn)行狀態(tài),讓系統(tǒng)的可觀測性進(jìn)一步提升。

運(yùn)維自動化(Automation)

TDengine TSDB 可以用二進(jìn)制包或 Docker 鏡像進(jìn)行安裝。TDengine TSDB 集群可以在 Kubernetes 環(huán)境通過 kubectl 命令或 Helm Chart 來部署。數(shù)據(jù)節(jié)點(diǎn)的增加或刪除可以通過執(zhí)行一條 SQL 命令(CREATE DNODE)完成。TDengine TSDB 集群的管理完全可以通過腳本自動化進(jìn)行,讓運(yùn)營和維護(hù)變得簡單。關(guān)于 Kubernetes 部署,請參考相關(guān)文檔。

TDengine TSDB 集群可以容納單個、多個甚至幾千個數(shù)據(jù)節(jié)點(diǎn)。應(yīng)用只需要向集群中任何一個數(shù)據(jù)節(jié)點(diǎn)發(fā)起連接即可。taosc 會自動完成 mnode 發(fā)現(xiàn)、元數(shù)據(jù)緩存、請求路由等操作,應(yīng)用層完全無感知。當(dāng)集群拓?fù)浒l(fā)生變化時——比如節(jié)點(diǎn)擴(kuò)容、負(fù)載均衡觸發(fā) vnode 遷移——taosc 會自動更新緩存,確保請求始終被路由到正確的節(jié)點(diǎn)。

總結(jié)

通過分布式設(shè)計、分區(qū)分片、存儲和計算分離、流計算與批量計算分離、AI 分析與數(shù)據(jù)庫內(nèi)核的深度集成,以及 RAFT 一致性協(xié)議等手段,TDengine TSDB 這個時序數(shù)據(jù)處理平臺具備水平擴(kuò)展性、彈性與韌性。通過內(nèi)置的 TDgpt 時序分析智能體,AI 能力直接融入查詢執(zhí)行流程,用一條 SQL 即可完成異常檢測、時序預(yù)測和數(shù)據(jù)補(bǔ)全。通過支持容器、Kubernetes 部署、全面的指標(biāo)監(jiān)測和自動化腳本,TDengine TSDB 可以方便地運(yùn)行在私有云、公有云或混合云上,從而充分利用云平臺的優(yōu)勢。因此 TDengine TSDB 是一個云原生時序數(shù)據(jù)庫(Cloud Native Time-Series Database),而不只是一個能在云上運(yùn)行的數(shù)據(jù)庫。