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

性能完勝InfluxDB,集群功能也開源,解讀TDengine集群的主要邏輯單元

同在基礎(chǔ)軟件領(lǐng)域創(chuàng)業(yè),時序數(shù)據(jù)庫 InfluxDB將集群功能閉源是完全可以理解的。但 InfluxDB集群 是剛需,是核心痛點,如果核心痛點不解決,那可替代方案會很多,產(chǎn)品本身的推廣就會大打折扣,開源的價值就大為下降。

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

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

性能完勝InfluxDB,集群功能也開源,解讀TDengine集群的主要邏輯單元 - TDengine Database 時序數(shù)據(jù)庫

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

物理節(jié)點(pnode): pnode 是一獨立運行、擁有自己的計算、存儲和網(wǎng)絡(luò)能力的計算機,可以是安裝有OS的物理機、虛擬機或 Docker 容器。物理節(jié)點由其配置的 FQDN (Fully Qualified Domain Name)來標識。TDengine 完全依賴 FQDN 來進行網(wǎng)絡(luò)通訊,如果不了解 FQDN,請看博文《一篇文章說清楚 TDengine 的 FQDN》。

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

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

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

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

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

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

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