丝袜美腿 亚洲有码,中国999精品视频,亚洲久久久福利 http://www.fjzmyy.cn TDengine | 高性能、分布式、支持SQL的時(shí)序數(shù)據(jù)庫(kù) | 濤思數(shù)據(jù) Fri, 21 Oct 2022 07:36:20 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 http://www.fjzmyy.cn/wp-content/uploads/2025/07/favicon.ico TDengine 集群 – TDengine | 濤思數(shù)據(jù) http://www.fjzmyy.cn 32 32 性能完勝I(mǎi)nfluxDB,集群功能也開(kāi)源,解讀TDengine集群的主要邏輯單元 http://www.fjzmyy.cn/influxdb-proxy/12402.html Fri, 08 Jul 2022 08:34:02 +0000 http://www.fjzmyy.cn/?p=12402 同在基礎(chǔ)軟件領(lǐng)域創(chuàng)業(yè),時(shí)序數(shù)據(jù)庫(kù) InfluxDB將集群功能閉源是完全可以理解的。但 InfluxDB集群 是剛需,是核心痛點(diǎn),如果核心痛點(diǎn)不解決,那可替代方案會(huì)很多,產(chǎn)品本身的推廣就會(huì)大打折扣,開(kāi)源的價(jià)值就大為下降。

TDengine 的設(shè)計(jì)是基于單個(gè)硬件、軟件系統(tǒng)不可靠,基于任何單臺(tái)計(jì)算機(jī)都無(wú)法提供足夠計(jì)算能力和存儲(chǔ)能力處理海量數(shù)據(jù)的假設(shè)進(jìn)行設(shè)計(jì)的。因此 TDengine 從研發(fā)的第一天起,就按照分布式高可靠架構(gòu)進(jìn)行設(shè)計(jì),是支持水平擴(kuò)展的,這樣任何單臺(tái)或多臺(tái)服務(wù)器發(fā)生硬件故障或軟件錯(cuò)誤都不影響系統(tǒng)的可用性和可靠性。并且和 InfluxDB 不同的是,TDengine 選擇將集群功能開(kāi)源。本文重點(diǎn)講解 TDengine 集群的主要邏輯單元的設(shè)計(jì)。

TDengine 分布式架構(gòu)的邏輯結(jié)構(gòu)圖如下:

性能完勝I(mǎi)nfluxDB,集群功能也開(kāi)源,解讀TDengine集群的主要邏輯單元 - TDengine Database 時(shí)序數(shù)據(jù)庫(kù)

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

物理節(jié)點(diǎn)(pnode): pnode 是一獨(dú)立運(yùn)行、擁有自己的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)能力的計(jì)算機(jī),可以是安裝有OS的物理機(jī)、虛擬機(jī)或 Docker 容器。物理節(jié)點(diǎn)由其配置的 FQDN (Fully Qualified Domain Name)來(lái)標(biāo)識(shí)。TDengine 完全依賴 FQDN 來(lái)進(jìn)行網(wǎng)絡(luò)通訊,如果不了解 FQDN,請(qǐng)看博文《一篇文章說(shuō)清楚 TDengine 的 FQDN》。

數(shù)據(jù)節(jié)點(diǎn)(dnode): dnode 是 TDengine 服務(wù)器側(cè)執(zhí)行代碼 taosd 在物理節(jié)點(diǎn)上的一個(gè)運(yùn)行實(shí)例,一個(gè)工作的系統(tǒng)必須有至少一個(gè)數(shù)據(jù)節(jié)點(diǎn)。dnode 包含零到多個(gè)邏輯的虛擬節(jié)點(diǎn)(vnode),零或者至多一個(gè)邏輯的管理節(jié)點(diǎn)(mnode)。dnode 在系統(tǒng)中的唯一標(biāo)識(shí)由實(shí)例的 End Point (EP)決定。EP 是 dnode 所在物理節(jié)點(diǎn)的 FQDN (Fully Qualified Domain Name)和系統(tǒng)所配置的網(wǎng)絡(luò)端口號(hào)(Port)的組合。通過(guò)配置不同的端口,一個(gè)物理節(jié)點(diǎn)(一臺(tái)物理機(jī)、虛擬機(jī)或容器)可以運(yùn)行多個(gè)實(shí)例,或有多個(gè)數(shù)據(jù)節(jié)點(diǎn)。

虛擬節(jié)點(diǎn)(vnode): 為更好的支持?jǐn)?shù)據(jù)分片、負(fù)載均衡,防止數(shù)據(jù)過(guò)熱或傾斜,數(shù)據(jù)節(jié)點(diǎn)被虛擬化成多個(gè)虛擬節(jié)點(diǎn)(vnode,圖中 V2, V3, V4等)。每個(gè) vnode 都是一個(gè)相對(duì)獨(dú)立的工作單元,是時(shí)序數(shù)據(jù)存儲(chǔ)的基本單元,具有獨(dú)立的運(yùn)行線程、內(nèi)存空間與持久化存儲(chǔ)的路徑。一個(gè) vnode 包含一定數(shù)量的表(數(shù)據(jù)采集點(diǎn))。當(dāng)創(chuàng)建一張新表時(shí),系統(tǒng)會(huì)檢查是否需要?jiǎng)?chuàng)建新的 vnode。一個(gè)數(shù)據(jù)節(jié)點(diǎn)上能創(chuàng)建的 vnode 的數(shù)量取決于該數(shù)據(jù)節(jié)點(diǎn)所在物理節(jié)點(diǎn)的硬件資源。一個(gè) vnode 只屬于一個(gè) DB,但一個(gè) DB 可以有多個(gè) vnode。一個(gè) vnode 除存儲(chǔ)的時(shí)序數(shù)據(jù)外,也保存有所包含的表的 schema、標(biāo)簽值等。一個(gè)虛擬節(jié)點(diǎn)由所屬的數(shù)據(jù)節(jié)點(diǎn)的EP,以及所屬的 VGroup ID 在系統(tǒng)內(nèi)唯一標(biāo)識(shí),由管理節(jié)點(diǎn)創(chuàng)建并管理。

管理節(jié)點(diǎn)(mnode): 一個(gè)虛擬的邏輯單元,負(fù)責(zé)所有數(shù)據(jù)節(jié)點(diǎn)運(yùn)行狀態(tài)的監(jiān)控和維護(hù),以及節(jié)點(diǎn)之間的負(fù)載均衡(圖中 M)。同時(shí),管理節(jié)點(diǎn)也負(fù)責(zé)元數(shù)據(jù)(包括用戶、數(shù)據(jù)庫(kù)、表、靜態(tài)標(biāo)簽等)的存儲(chǔ)和管理,因此也稱為 Meta Node。TDengine 集群中可配置多個(gè)(最多不超過(guò) 3 個(gè)) mnode,它們自動(dòng)構(gòu)建成為一個(gè)虛擬管理節(jié)點(diǎn)組(圖中 M0, M1, M2)。

mnode 間采用 master/slave 的機(jī)制進(jìn)行管理,而且采取強(qiáng)一致方式進(jìn)行數(shù)據(jù)同步, 任何數(shù)據(jù)更新操作只能在 Master 上進(jìn)行。mnode 集群的創(chuàng)建由系統(tǒng)自動(dòng)完成,無(wú)需人工干預(yù)。每個(gè) dnode 上至多有一個(gè) mnode,由所屬的數(shù)據(jù)節(jié)點(diǎn)的EP來(lái)唯一標(biāo)識(shí)。每個(gè) dnode 通過(guò)內(nèi)部消息交互自動(dòng)獲取整個(gè)集群中所有 mnode 所在的 dnode 的EP。

虛擬節(jié)點(diǎn)組(VGroup): 不同數(shù)據(jù)節(jié)點(diǎn)上的 vnode 可以組成一個(gè)虛擬節(jié)點(diǎn)組(vnode group)來(lái)保證系統(tǒng)的高可靠。虛擬節(jié)點(diǎn)組內(nèi)采取 master/slave 的方式進(jìn)行管理。寫(xiě)操作只能在 master vnode 上進(jìn)行,系統(tǒng)采用異步復(fù)制的方式將數(shù)據(jù)同步到 slave vnode,這樣確保了一份數(shù)據(jù)在多個(gè)物理節(jié)點(diǎn)上有拷貝。一個(gè) vgroup 里虛擬節(jié)點(diǎn)個(gè)數(shù)就是數(shù)據(jù)的副本數(shù)。如果一個(gè) DB 的副本數(shù)為 N,系統(tǒng)必須有至少 N 數(shù)據(jù)節(jié)點(diǎn)。副本數(shù)在創(chuàng)建DB時(shí)通過(guò)參數(shù) replica 可以指定,缺省為 1。使用 TDengine 的多副本特性,可以不再需要昂貴的磁盤(pán)陣列等存儲(chǔ)設(shè)備,就可以獲得同樣的數(shù)據(jù)高可靠性。虛擬節(jié)點(diǎn)組由管理節(jié)點(diǎn)創(chuàng)建、管理,并且由管理節(jié)點(diǎn)分配一個(gè)系統(tǒng)唯一的 ID,VGroup ID。如果兩個(gè)虛擬節(jié)點(diǎn)的 vnode group ID 相同,說(shuō)明他們屬于同一個(gè)組,數(shù)據(jù)互為備份。虛擬節(jié)點(diǎn)組里虛擬節(jié)點(diǎn)的個(gè)數(shù)是可以動(dòng)態(tài)改變的,容許只有一個(gè),也就是沒(méi)有數(shù)據(jù)復(fù)制。VGroup ID 是永遠(yuǎn)不變的,即使一個(gè)虛擬節(jié)點(diǎn)組被刪除,它的ID也不會(huì)被收回重復(fù)利用。

TAOSC: taosc 是 TDengine 給應(yīng)用提供的驅(qū)動(dòng)程序(driver),負(fù)責(zé)處理應(yīng)用與集群的接口交互,提供 C/C++ 語(yǔ)言原生接口,內(nèi)嵌于 JDBC、C#、Python、Go、Node.js 語(yǔ)言連接庫(kù)里。應(yīng)用都是通過(guò) taosc 而不是直接連接集群中的數(shù)據(jù)節(jié)點(diǎn)與整個(gè)集群進(jìn)行交互的。這個(gè)模塊負(fù)責(zé)獲取并緩存元數(shù)據(jù);將插入、查詢等請(qǐng)求轉(zhuǎn)發(fā)到正確的數(shù)據(jù)節(jié)點(diǎn);在把結(jié)果返回給應(yīng)用時(shí),還需要負(fù)責(zé)最后一級(jí)的聚合、排序、過(guò)濾等操作。對(duì)于 JDBC、C/C++、C#、Python、Go、Node.js 接口而言,這個(gè)模塊是在應(yīng)用所處的物理節(jié)點(diǎn)上運(yùn)行。同時(shí),為支持全分布式的 RESTful 接口,taosc 在 TDengine 集群的每個(gè) dnode 上都有一運(yùn)行實(shí)例。

以上就是 TDengine 集群的主要邏輯單元,我們將會(huì)通過(guò)更多文章,向大家解讀 TDengine 集群的更多設(shè)計(jì)秘籍。

]]>
石景山区| 镇坪县| 柘城县| 黎川县| 太仆寺旗| 信宜市| 福建省| 阳泉市| 司法| 绵阳市| 灵山县| 荥经县| 忻州市| 陆丰市| 昌乐县| 昂仁县| 米易县| 晋州市| 西乌| 麻栗坡县| 兴城市| 卢龙县| 隆尧县| 原阳县| 栖霞市| 府谷县| 略阳县| 玛曲县| 泊头市| 盖州市| 崇明县| 石城县| 黔南| 诸城市| 木里| 民乐县| 广丰县| 齐齐哈尔市| 岳普湖县| 金乡县| 扎囊县|