GoldenDB分布式數(shù)據(jù)庫(kù)探索出了云化部署方式
金融信息科技領(lǐng)域,集中式數(shù)據(jù)庫(kù)向分布式數(shù)據(jù)庫(kù)的轉(zhuǎn)型正在如火如荼地開(kāi)展。相較于集中式數(shù)據(jù)庫(kù)將所有數(shù)據(jù)存放在一個(gè)節(jié)點(diǎn)中的做法,分布式數(shù)據(jù)庫(kù)將數(shù)據(jù)分布到多個(gè)獨(dú)立的節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)都有自己的計(jì)算和存儲(chǔ)單元,相互之間通過(guò)網(wǎng)絡(luò)連接。這樣的架構(gòu)帶來(lái)的好處是,可以通過(guò)大量節(jié)點(diǎn)來(lái)構(gòu)建支持海量存儲(chǔ)的數(shù)據(jù)庫(kù),大大增加了系統(tǒng)容量,同時(shí)還可以通過(guò)增加、刪除節(jié)點(diǎn)的方式來(lái)進(jìn)行動(dòng)態(tài)擴(kuò)縮容。另外,通過(guò)在不同節(jié)點(diǎn)上存儲(chǔ)數(shù)據(jù)的多個(gè)副本,當(dāng)某個(gè)節(jié)點(diǎn)損壞時(shí),其它的節(jié)點(diǎn)可以接替故障節(jié)點(diǎn)繼續(xù)對(duì)外服務(wù),以提供高可用的能力。 分布式數(shù)據(jù)庫(kù)在國(guó)內(nèi)蓬勃發(fā)展,目前主要的部署方式是本地部署,即通過(guò)產(chǎn)品內(nèi)置的部署工具,直接在裸金屬服務(wù)器(下稱物理機(jī))上執(zhí)行安裝,數(shù)據(jù)庫(kù)程序直接運(yùn)行在物理機(jī)上。本地部署的優(yōu)點(diǎn)是簡(jiǎn)潔明了,但同時(shí)也存在一些不可忽視的缺點(diǎn)。首先,本地部署方式下,數(shù)據(jù)庫(kù)系統(tǒng)獨(dú)占硬件資源,無(wú)法與其它系統(tǒng)共享硬件資源池,資源利用率低;其次,部署方式是封閉的,無(wú)法實(shí)現(xiàn)DBaaS,使得最終用戶能按需申請(qǐng)數(shù)據(jù)庫(kù)服務(wù); 基于此,中興通訊旗下金篆信科GoldenDB分布式數(shù)據(jù)庫(kù)結(jié)合某國(guó)有大行PaaS平臺(tái)環(huán)境,對(duì)本地部署方式進(jìn)行改造,探索出了云化部署方式。依托行內(nèi)PaaS平臺(tái),達(dá)成了以下兩個(gè)目標(biāo):一是GoldenDB從PaaS中動(dòng)態(tài)獲取硬件資源,而非直接獨(dú)占裸金屬服務(wù)器;二是構(gòu)建GoldenDB私有云,數(shù)據(jù)庫(kù)管理員可以通過(guò)行內(nèi)云管平臺(tái),實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)動(dòng)態(tài)部署。
邏輯架構(gòu)
GoldenDB的邏輯架構(gòu)如圖 1所示,整個(gè)數(shù)據(jù)庫(kù)由管理節(jié)點(diǎn)與多個(gè)租戶組成。租戶是可以獨(dú)立對(duì)應(yīng)用提供數(shù)據(jù)庫(kù)服務(wù)的基本單位,它由計(jì)算節(jié)點(diǎn)(CN)、存儲(chǔ)節(jié)點(diǎn)(DN)和全局事務(wù)管理器(GTM)組成,并且,不同租戶的節(jié)點(diǎn)相互隔離。每個(gè)租戶中,計(jì)算節(jié)點(diǎn)負(fù)責(zé)向應(yīng)用提供接入服務(wù),CN可以有多個(gè),是無(wú)狀態(tài)的。存儲(chǔ)節(jié)點(diǎn)則負(fù)責(zé)存儲(chǔ)數(shù)據(jù),有主備之分。租戶的數(shù)據(jù)被分散存儲(chǔ)到多個(gè)主節(jié)點(diǎn),每個(gè)主節(jié)點(diǎn)又可以有多個(gè)備節(jié)點(diǎn)。GTM負(fù)責(zé)分配和管理分布式事務(wù)(跨分片事務(wù))的ID。管理節(jié)點(diǎn)負(fù)責(zé)管理這些租戶,記錄租戶下所有節(jié)點(diǎn)的地址、隸屬的租戶、DN的主備關(guān)系等等信息,這些信息稱為元數(shù)據(jù),同時(shí),管理節(jié)點(diǎn)還會(huì)對(duì)各節(jié)點(diǎn)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,在節(jié)點(diǎn)發(fā)生故障時(shí),執(zhí)行主備切換。
?
圖 1?GoldenDB邏輯架構(gòu)
在本地部署模式下,每個(gè)節(jié)點(diǎn)都直接部署在物理機(jī)上,一個(gè)節(jié)點(diǎn)可以獨(dú)占一臺(tái)物理機(jī),同時(shí)也允許多個(gè)節(jié)點(diǎn)共享一臺(tái)物理機(jī)。部署前,需要人工判斷物理機(jī)剩余資源是否能滿足節(jié)點(diǎn)要求,另外,多個(gè)節(jié)點(diǎn)共享物理機(jī)的情況下,無(wú)法對(duì)節(jié)點(diǎn)使用的資源進(jìn)行控制,可能發(fā)生節(jié)點(diǎn)之間爭(zhēng)搶資源的情況,影響系統(tǒng)穩(wěn)定性。
云化部署架構(gòu)
在實(shí)現(xiàn)云化部署的同時(shí),也要盡可能兼容本地部署方式,確保方案的簡(jiǎn)潔性、產(chǎn)品的統(tǒng)一性。在此原則下,GoldenDB設(shè)計(jì)了如圖 2所示的云化部署架構(gòu)。 ?
圖 2?GoldenDB云化部署架構(gòu)
首先,將數(shù)據(jù)庫(kù)租戶節(jié)點(diǎn)放到容器中運(yùn)行,管理節(jié)點(diǎn)可繼續(xù)在物理機(jī)中運(yùn)行。管理節(jié)點(diǎn)占用資源相對(duì)固定,且一次部署后通常不再變化,因此動(dòng)態(tài)資源分配等特性不是必須的,保持本地部署可以降低改造工作量。另外,租戶節(jié)點(diǎn)的部署需要依賴管理節(jié)點(diǎn),因此也需要先使用本地部署方式安裝好管理節(jié)點(diǎn),作為后續(xù)租戶云化部署的基礎(chǔ)條件。租戶節(jié)點(diǎn)容器化可以帶來(lái)諸多好處,其一,容器實(shí)現(xiàn)了節(jié)點(diǎn)資源的按需分配,其二,行內(nèi)有成熟的容器平臺(tái)(下稱PaaS平臺(tái))基礎(chǔ)設(shè)施,無(wú)需重復(fù)建設(shè),其三,改造方便,將節(jié)點(diǎn)的安裝文件制作成鏡像,就可以完成容器化部署。 其次,向管理節(jié)點(diǎn)登記租戶節(jié)點(diǎn),完成租戶的部署。分布式數(shù)據(jù)庫(kù)的租戶由節(jié)點(diǎn)和節(jié)點(diǎn)間的關(guān)系組成,容器化只完成了節(jié)點(diǎn)的創(chuàng)建,之后我們還需要對(duì)節(jié)點(diǎn)間的關(guān)系進(jìn)行登記管理。例如節(jié)點(diǎn)與租戶的隸屬關(guān)系、DN所屬的分片、DN的主備角色等信息,這些關(guān)系信息登記納管到管理節(jié)點(diǎn)中后,才能算真正意義上完成了租戶的創(chuàng)建,可以對(duì)外服務(wù)。因此,還需要對(duì)管理節(jié)點(diǎn)進(jìn)行改造,開(kāi)放創(chuàng)建租戶的接口,將節(jié)點(diǎn)清單及節(jié)點(diǎn)關(guān)系作為參數(shù)傳入,最終完成租戶的部署。 GoldenDB云化部署有兩個(gè)關(guān)鍵點(diǎn)。一是節(jié)點(diǎn)容器化,將數(shù)據(jù)庫(kù)的節(jié)點(diǎn)運(yùn)行環(huán)境從物理機(jī)改為容器,并以行內(nèi)PaaS平臺(tái)(如k8s)為底座,使得數(shù)據(jù)庫(kù)和其它各類服務(wù)能共享統(tǒng)一的硬件資源池;二是管理節(jié)點(diǎn)開(kāi)放納管接口,將容器節(jié)點(diǎn)及其相互之間的關(guān)系登記到管理節(jié)點(diǎn)中,實(shí)際意義上完成租戶的創(chuàng)建。
統(tǒng)一部署入口
目前為止,已經(jīng)可以在容器環(huán)境中部署租戶,但還剩最后一個(gè)目標(biāo)待完成,即統(tǒng)一的部署入口。數(shù)據(jù)庫(kù)需要與其它基礎(chǔ)設(shè)施一樣,支持統(tǒng)一的部署入口,以達(dá)到DBaaS的效果。管理員或者最終用戶可以在云管平臺(tái)門(mén)戶上申請(qǐng)數(shù)據(jù)庫(kù)資源,填寫(xiě)所需規(guī)格和租戶信息,即可完成環(huán)境的部署和交付。云管平臺(tái)需要做少量的改造,從而能將容器創(chuàng)建、節(jié)點(diǎn)納管等部署流程串接起來(lái)。
?
圖 3?GoldenDB云化部署流程
最終的部署流程如下: ① 管理員或最終用戶通過(guò)云管平臺(tái)發(fā)起部署申請(qǐng),填寫(xiě)節(jié)點(diǎn)類型、節(jié)點(diǎn)數(shù)、節(jié)點(diǎn)主備關(guān)系等信息; ② 云管平臺(tái)調(diào)用PaaS平臺(tái),拉取預(yù)先制作的節(jié)點(diǎn)鏡像,創(chuàng)建相應(yīng)的容器,分配IP地址等; ③ 云管平臺(tái)調(diào)用GoldenDB管理節(jié)點(diǎn)元數(shù)據(jù)登記接口,將節(jié)點(diǎn)元數(shù)據(jù)、容器IP地址等信息作為參數(shù)傳遞; ④ GoldenDB管理節(jié)點(diǎn)解析收到的參數(shù),對(duì)節(jié)點(diǎn)進(jìn)行初始化,比如建立DN的主備復(fù)制關(guān)系; ⑤ GoldenDB管理節(jié)點(diǎn)最終將節(jié)點(diǎn)的元數(shù)據(jù)信息寫(xiě)入自身存儲(chǔ),至此,租戶建立完成,可以對(duì)外服務(wù)。
高可用
分布式數(shù)據(jù)庫(kù)與PaaS平臺(tái)有一個(gè)重疊的功能,即高可用。前文提到,分布式數(shù)據(jù)庫(kù)本地部署時(shí),管理節(jié)點(diǎn)會(huì)對(duì)其它節(jié)點(diǎn)的運(yùn)行狀況進(jìn)行監(jiān)控,如果發(fā)生節(jié)點(diǎn)故障,管理節(jié)點(diǎn)會(huì)發(fā)起故障切換,以保證數(shù)據(jù)庫(kù)的高可用。而云化部署下,容器發(fā)生故障時(shí),PaaS平臺(tái)也有自動(dòng)重建容器的能力。那么在云化部署下,數(shù)據(jù)庫(kù)的高可用應(yīng)該依靠管理節(jié)點(diǎn)還是容器來(lái)實(shí)現(xiàn)呢?答案是仍然依賴管理節(jié)點(diǎn)。 原因有二。首先,數(shù)據(jù)庫(kù)的高可用并不是簡(jiǎn)單地拉起節(jié)點(diǎn),尤其對(duì)于有狀態(tài)的DN節(jié)點(diǎn)。DN節(jié)點(diǎn)宕機(jī)后,必須仔細(xì)處理數(shù)據(jù)的一致性,而PaaS平臺(tái)顯然無(wú)法做到這一點(diǎn)。其次,繼續(xù)由管理節(jié)點(diǎn)提供高可用能力,使得本地部署和云化部署模式下,高可用的行為一致、使用體驗(yàn)高度統(tǒng)一,簡(jiǎn)化了系統(tǒng)復(fù)雜度。
小結(jié)
綜上,GoldenDB通過(guò)與PaaS的有機(jī)結(jié)合,實(shí)現(xiàn)了分布式數(shù)據(jù)庫(kù)的云化部署。這種方式兼容業(yè)界主流的容器化生態(tài),架構(gòu)簡(jiǎn)潔清晰,與云管平臺(tái)簡(jiǎn)單適配后,可快速落地。同時(shí),在最終使用和運(yùn)維的體驗(yàn)上,與本地部署方式高度統(tǒng)一,降低了應(yīng)用開(kāi)發(fā)和運(yùn)維的成本,是分布式數(shù)據(jù)庫(kù)云化部署的有效實(shí)踐。 目前在行內(nèi)已經(jīng)全面實(shí)現(xiàn)云化部署,并且已用于生產(chǎn)環(huán)境,已累計(jì)為10多個(gè)應(yīng)用的測(cè)試和生產(chǎn)環(huán)境部署了近200個(gè)租戶,達(dá)成了節(jié)點(diǎn)資源按需分配、資源隔離、快速部署等目標(biāo)。后續(xù)還將繼續(xù)改進(jìn)管理節(jié)點(diǎn)的租戶管理能力,支持海量節(jié)點(diǎn)(1000以上)管理及節(jié)點(diǎn)在管理節(jié)點(diǎn)間遷移的能力。
GoldenDB分布式數(shù)據(jù)庫(kù)探索出了云化部署方式的評(píng)論 (共 條)
