教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Doris架構(gòu)中包含哪些技術(shù)?

更新時(shí)間:2023年08月22日11時(shí)46分 來源:傳智教育 瀏覽次數(shù):

Doris主要整合了Google Mesa(數(shù)據(jù)模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存儲(chǔ)格式,編碼和壓縮)的技術(shù)。

為什么要將這三種技術(shù)整合?

Mesa可以滿足我們?cè)S多存儲(chǔ)需求的需求,但是Mesa本身不提供SQL查詢引擎。

Impala是一個(gè)非常好的MPP SQL查詢引擎,但是缺少完美的分布式存儲(chǔ)引擎。

自研列式存儲(chǔ):存儲(chǔ)層對(duì)存儲(chǔ)數(shù)據(jù)的管理通過storage_root_path路徑進(jìn)行配置,路徑可以是多個(gè)。存儲(chǔ)目錄下一層按照分桶進(jìn)行組織,分桶目錄下存放具體的tablet,按照tablet_id命名子目錄。因此選擇了這三種技術(shù)的組合。

Doris技術(shù)整合

Doris的系統(tǒng)架構(gòu)如下,Doris主要分為FE和BE兩個(gè)組件。

整體架構(gòu)

Doris的架構(gòu)很簡(jiǎn)潔,使用MySQL協(xié)議,用戶可以使用任何MySQL ODBC/JDBC和MySQL客戶端直接訪問Doris,只設(shè)FE(Frontend)、BE(Backend)兩種角色、兩個(gè)進(jìn)程,不依賴于外部組件,方便部署和運(yùn)維。

FE:Frontend,即Doris的前端節(jié)點(diǎn)。主要負(fù)責(zé)接收和返回客戶端請(qǐng)求、元數(shù)據(jù)以及集群管理、查詢計(jì)劃生成等工作。

BE:Backend,即Doris的后端節(jié)點(diǎn)。主要負(fù)責(zé)數(shù)據(jù)存儲(chǔ)與管理、查詢計(jì)劃執(zhí)行等工作。

FE,BE都可線性擴(kuò)展?FE主要有兩個(gè)角色,一個(gè)是follower,另一個(gè)是observer。多個(gè)follower組成選舉組,會(huì)選出一個(gè)master,master是follower的一個(gè)特例,Master跟follower,主要是用來達(dá)到元數(shù)據(jù)的高可用,保證單節(jié)點(diǎn)宕機(jī)的情況下,元數(shù)據(jù)能夠?qū)崟r(shí)地在線恢復(fù),而不影響整個(gè)服務(wù)。

Observer節(jié)點(diǎn)僅從leader節(jié)點(diǎn)進(jìn)行元數(shù)據(jù)同步,不參與選舉??梢詸M向擴(kuò)展以提供元數(shù)據(jù)的讀服務(wù)的擴(kuò)展性。

數(shù)據(jù)的可靠性由BE保證,BE會(huì)對(duì)整個(gè)數(shù)據(jù)存儲(chǔ)多副本或者是三副本。副本數(shù)可根據(jù)需求動(dòng)態(tài)調(diào)整。

Doris整體架構(gòu)

元數(shù)據(jù)結(jié)構(gòu)

Doris采用==Paxos協(xié)議以及Memory+ Checkpoint + Journal的機(jī)制==來確保元數(shù)據(jù)的高性能及高可靠。元數(shù)據(jù)的每次更新,都會(huì)遵照以下幾步:

(1)寫入到磁盤的日志文件中

(2)再寫到內(nèi)存中

(3)定期checkpoint到本地磁盤上

相當(dāng)于是一個(gè)純內(nèi)存的一個(gè)結(jié)構(gòu),也就是說所有的元數(shù)據(jù)都會(huì)緩存在內(nèi)存之中,從而保證FE在宕機(jī)后能夠快速恢復(fù)元數(shù)據(jù),而且不丟失元數(shù)據(jù)。

Leader、follower和observer它們?nèi)齻€(gè)構(gòu)成一個(gè)可靠的服務(wù),如果發(fā)生節(jié)點(diǎn)宕機(jī)的情況,一般是部署一個(gè)leader兩個(gè)follower,目前來說基本上也是這么部署的。就是說三個(gè)節(jié)點(diǎn)去達(dá)到一個(gè)高可用服務(wù)。單機(jī)的節(jié)點(diǎn)故障的時(shí)候其實(shí)基本上三個(gè)就夠了,因?yàn)镕E節(jié)點(diǎn)畢竟它只存了一份元數(shù)據(jù),它的壓力不大,所以如果FE太多的時(shí)候它會(huì)去消耗機(jī)器資源,所以多數(shù)情況下三個(gè)就足夠了,可以達(dá)到一個(gè)很高可用的元數(shù)據(jù)服務(wù)。

0 分享到:
和我們?cè)诰€交談!