cantian引擎源碼結(jié)構(gòu)
?專欄內(nèi)容:
參天引擎內(nèi)核架構(gòu)
本專欄一起來聊聊參天引擎內(nèi)核架構(gòu),以及如何實(shí)現(xiàn)多機(jī)的數(shù)據(jù)庫節(jié)點(diǎn)的多讀多寫,與傳統(tǒng)主備,MPP的區(qū)別,技術(shù)難點(diǎn)的分析,數(shù)據(jù)元數(shù)據(jù)同步,多主節(jié)點(diǎn)的情況下對故障容災(zāi)的支持。手寫數(shù)據(jù)庫toadb
本專欄主要介紹如何從零開發(fā),開發(fā)的步驟,以及開發(fā)過程中的涉及的原理,遇到的問題等,讓大家能跟上并且可以一起開發(fā),讓每個(gè)需要的人成為參與者。
本專欄會定期更新,對應(yīng)的代碼也會定期更新,每個(gè)階段的代碼會打上tag,方便階段學(xué)習(xí)。
?開源貢獻(xiàn):
- toadb開源庫
個(gè)人主頁:我的主頁
管理社區(qū):開源數(shù)據(jù)庫
座右銘:天行健,君子以自強(qiáng)不息;地勢坤,君子以厚德載物.
前言
國內(nèi)數(shù)據(jù)庫的發(fā)展如火如荼,每年的各種大會都會聽到好消息,今年除了數(shù)據(jù)庫本身的各種技術(shù)演進(jìn)之外,華為發(fā)布了參天引擎,而且是做為數(shù)據(jù)庫的一種基座形式,也就是所有數(shù)據(jù)庫可以在參天引擎基礎(chǔ)上,構(gòu)建形成多主分布式架構(gòu)的數(shù)據(jù)庫系統(tǒng),這也就是它叫引擎的目的。
本專欄就來詳細(xì)聊一聊參天引擎內(nèi)部架構(gòu),以及如何適配參天引擎。
概述
cantian引擎核心代碼已經(jīng)基本開源,也讓愛好者們躍躍欲試,今天給大家分享一下參天引擎的源碼結(jié)構(gòu)。
源碼地址
gitee地址
源碼目錄結(jié)構(gòu)
源代碼主要在pkg/src目錄下:
[senllang@hatch src]$ ll
total 44
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 cluster
-rw-r--r--. 1 senllang develops 792 Dec 9 14:03 CMakeLists.txt
drwxr-xr-x. 4 senllang develops 94 Dec 9 14:03 cmd
drwxr-xr-x. 4 senllang develops 56 Dec 9 14:03 cms
drwxr-xr-x. 3 senllang develops 8192 Dec 9 14:03 common
drwxr-xr-x. 3 senllang develops 39 Dec 9 14:03 driver
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec 9 14:03 kernel
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 mec
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 protocol
drwxr-xr-x. 2 senllang develops 66 Dec 9 14:03 rc
drwxr-xr-x. 3 senllang develops 4096 Dec 9 14:03 server
drwxr-xr-x. 4 senllang develops 4096 Dec 9 14:03 tse
drwxr-xr-x. 2 senllang develops 60 Dec 9 14:03 upgrade_check
drwxr-xr-x. 4 senllang develops 52 Dec 9 14:03 utils
drwxr-xr-x. 2 senllang develops 72 Dec 9 14:03 version
如上圖,可以看到以模塊命名的目錄。
主要模塊介紹
主要有幾個(gè)模塊:
cantianLib
可以做為一個(gè)單獨(dú)的節(jié)點(diǎn)存在,如數(shù)據(jù)節(jié)點(diǎn),或者協(xié)調(diào)節(jié)點(diǎn)等。一般做為數(shù)據(jù)節(jié)點(diǎn),也就是管理數(shù)據(jù)的存儲,它僅僅是管理協(xié)調(diào)的功能,實(shí)現(xiàn)數(shù)據(jù)和設(shè)備由CMS節(jié)點(diǎn)負(fù)責(zé)。
cantianlib是數(shù)據(jù)庫引擎與CMS節(jié)點(diǎn)之間的橋梁,它會處理各種SQL執(zhí)行場景下對數(shù)據(jù)的請求,以及對于事務(wù)日志的記錄。
源碼目錄
cantianLib 代碼位于
./pkg/src/server/
系統(tǒng)架構(gòu)
它也是多線程架構(gòu)實(shí)現(xiàn),它的前端是DB agent,通過監(jiān)聽來自它的網(wǎng)絡(luò)請求,比如登陸數(shù)據(jù)庫,執(zhí)行DDL,DML等,將它們轉(zhuǎn)換為對數(shù)據(jù)的請求,再發(fā)往CMS。主要包括幾個(gè)服務(wù):
- kernel服務(wù),主要用于數(shù)據(jù)和鎖的請求處理,并且負(fù)責(zé)buffer管理,catalog元數(shù)據(jù)管理等;
- DB后臺服務(wù),主要處理來自于DB agent的請求,將SQL場景轉(zhuǎn)換為數(shù)據(jù)請求;通過將session綁定到線程服務(wù)中,可以處理數(shù)據(jù)并發(fā)訪問;
CMS模塊
CMS是一個(gè)核心服務(wù),主要對分布式資源,分布式鎖進(jìn)行調(diào)度管理,還有存儲設(shè)備進(jìn)行管理。整體是一個(gè)多線程的架構(gòu),通過網(wǎng)絡(luò)與前端進(jìn)行交互,響應(yīng)資源的請求,并從存儲文件系統(tǒng)中進(jìn)行獲取。
源碼目錄
CMS模塊的源碼位于
./pkg/src/cms/cms
系統(tǒng)架構(gòu)
它的代碼架構(gòu)如下圖所示
模塊主要有三個(gè)階段:
- 初始化;包括配置加載和初始化,各服務(wù)的初始化,以及服務(wù)線程的啟動,設(shè)備和網(wǎng)絡(luò)的啟動;
- 運(yùn)行階段;主要處理來自message的事件,對消息進(jìn)行處理響應(yīng);這里要主要不同資源,鎖的請求分配;
- 退出;在cms退出時(shí),清理和落盤數(shù)據(jù);
總結(jié)
總得來看,參天引擎分為三大塊,
- 一是數(shù)據(jù)庫計(jì)算結(jié)合的agent,這里并沒有看到開源,它主要是在數(shù)據(jù)庫計(jì)算時(shí),需要的數(shù)據(jù),向數(shù)據(jù)節(jié)點(diǎn)申請釋放;
- 二是cantianLib,也就是數(shù)據(jù)節(jié)點(diǎn),這部分維護(hù)數(shù)據(jù)庫相關(guān)的數(shù)據(jù),如數(shù)據(jù)的緩存,數(shù)據(jù)庫的元數(shù)據(jù)等,在多節(jié)點(diǎn)間進(jìn)行同步,還有一些多節(jié)點(diǎn)需要協(xié)調(diào)的業(yè)務(wù),如備份,checkpoint,事務(wù)提交等;
- 第三部分是CMS,也就是物理存儲部分,將數(shù)據(jù)時(shí)行分散到存儲設(shè)備,管理數(shù)據(jù)分布,在請求數(shù)據(jù)時(shí)可以從物理設(shè)備讀寫數(shù)據(jù);
當(dāng)然對應(yīng)的物理存儲設(shè)備也算第四部分,可以對應(yīng)NFS,也可以是DBstor,這部分的優(yōu)化也沒有開源。
結(jié)尾
非常感謝大家的支持,在瀏覽的同時(shí)別忘了留下您寶貴的評論,如果覺得值得鼓勵(lì),請點(diǎn)贊,收藏,我會更加努力!文章來源:http://www.zghlxwxcb.cn/news/detail-775990.html
作者郵箱:study@senllang.onaliyun.com
如有錯(cuò)誤或者疏漏歡迎指出,互相學(xué)習(xí)。文章來源地址http://www.zghlxwxcb.cn/news/detail-775990.html
到了這里,關(guān)于【參天引擎】華為參天引擎內(nèi)核架構(gòu)源碼架構(gòu),多線程服務(wù),數(shù)據(jù)節(jié)點(diǎn)管理,多節(jié)點(diǎn)間元數(shù)據(jù)管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!