張坤濤 吳思瑩 王世華
(廣東石油化工學(xué)院理學(xué)院 廣東省茂名市 525000)
近年來(lái),云計(jì)算進(jìn)入突飛猛進(jìn)快速發(fā)展階段,正日益演變成為新型的信息基礎(chǔ)設(shè)施。在各國(guó)紛紛大力扶持云計(jì)算產(chǎn)業(yè)的背景下,中國(guó)率先實(shí)行“云優(yōu)先”政策,云計(jì)算技術(shù)不斷演進(jìn)發(fā)展成熟,并快速在政務(wù)、醫(yī)療、金融等重要領(lǐng)域普及,其市場(chǎng)也從十幾億規(guī)??焖僭鲩L(zhǎng)至千億規(guī)模。而信息系統(tǒng)的建立越來(lái)越依賴(lài)數(shù)據(jù)庫(kù)的支持,云數(shù)據(jù)庫(kù)已成為當(dāng)前的一個(gè)研究熱點(diǎn)[1-4]。
目前國(guó)內(nèi)外越來(lái)越多企業(yè)或組織將自身業(yè)務(wù)數(shù)據(jù)從基礎(chǔ)設(shè)施移到云數(shù)據(jù)庫(kù),以充分利用云數(shù)據(jù)庫(kù)的優(yōu)勢(shì),從而極大降低運(yùn)維成本和提高數(shù)據(jù)庫(kù)性能。也越來(lái)越多的企業(yè)、組織和研究人員進(jìn)行云數(shù)據(jù)庫(kù)的設(shè)計(jì)與開(kāi)發(fā)。如國(guó)內(nèi)阿里云的云數(shù)據(jù)庫(kù),擁有關(guān)系型數(shù)據(jù)庫(kù)、NoSQL數(shù)據(jù)庫(kù),具有穩(wěn)定可靠、可彈性伸縮等特點(diǎn),同時(shí)在性能、監(jiān)控等方面具有優(yōu)勢(shì);國(guó)外的如Amazon RDS,一種關(guān)系型云數(shù)據(jù)庫(kù)。使用這個(gè)數(shù)據(jù)庫(kù),很多部署管理的工作不需要使用者來(lái)做,或者說(shuō)做起來(lái)很容易,如數(shù)據(jù)庫(kù)安裝、版本升級(jí)、環(huán)境準(zhǔn)備、備份/還原等[5];文獻(xiàn)[6]則基于PaaS平臺(tái)和云編排引擎設(shè)計(jì)出了新的云數(shù)據(jù)庫(kù)平臺(tái),實(shí)現(xiàn)了自主研發(fā)。
雖然云數(shù)據(jù)庫(kù)是當(dāng)前的一個(gè)研究熱門(mén),但是在針對(duì)于高校云數(shù)據(jù)庫(kù)的研究卻少之甚少。數(shù)據(jù)庫(kù)技術(shù)是計(jì)算機(jī)科學(xué)技術(shù)中發(fā)展最快的領(lǐng)域之一,也是應(yīng)用最廣的技術(shù)之一,它是計(jì)算機(jī)信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ)[7]。但是在數(shù)據(jù)庫(kù)的相關(guān)教學(xué)中,采取的教學(xué)設(shè)備在設(shè)計(jì)中存在一定的缺點(diǎn),如教學(xué)機(jī)每次重啟設(shè)備自動(dòng)還原、學(xué)生電腦與教學(xué)機(jī)不統(tǒng)一、設(shè)備卡頓等,造成學(xué)生的時(shí)間的浪費(fèi),課后沒(méi)法繼續(xù)深入研究等問(wèn)題,導(dǎo)致學(xué)生的深入研究的興趣逐漸降低,嚴(yán)重抑制了學(xué)生的進(jìn)一步思考與分析。另外,在信息化快速發(fā)展的背景下,傳統(tǒng)的數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿(mǎn)足需求。隨著高校師生所產(chǎn)生的信息不斷增多,傳統(tǒng)的信息技術(shù)早已無(wú)法滿(mǎn)足高校師生的日常需要,高校教生對(duì)信息技術(shù)有了更高的要求[8]。
一個(gè)專(zhuān)門(mén)針對(duì)于高校的數(shù)據(jù)庫(kù)勢(shì)在必行。高校云數(shù)據(jù)庫(kù)在高校教學(xué)中的應(yīng)用不僅能有效降低硬件、軟件的運(yùn)行成本,同時(shí)還為高校教學(xué)提供優(yōu)質(zhì)的云服務(wù),促進(jìn)高校的教學(xué)。
本文對(duì)廣東地區(qū)大學(xué)院校對(duì)云數(shù)據(jù)庫(kù)的需求進(jìn)行了調(diào)研,通過(guò)研究目前高校在數(shù)據(jù)庫(kù)教學(xué)中存在的缺陷和不足以及基于現(xiàn)有云計(jì)算和云數(shù)據(jù)庫(kù)的相關(guān)技術(shù),提出并設(shè)計(jì)出了一種專(zhuān)門(mén)針對(duì)于為高校服務(wù)的云數(shù)據(jù)庫(kù)平臺(tái)。
高校云數(shù)據(jù)庫(kù)在基礎(chǔ)功能上需求基本與目前國(guó)內(nèi)大部分云數(shù)據(jù)庫(kù)需求一致?;竟δ苣K需求有用戶(hù)管理、容器管理、鏡像管理、實(shí)例管理、物理機(jī)管理和監(jiān)控報(bào)警。由于本文主要針對(duì)于高校的云數(shù)據(jù)庫(kù)研究,主體用戶(hù)為高校師生和高校管理員,所以主要進(jìn)行了對(duì)學(xué)生、教師、管理員三方的需求分析。
學(xué)生主要在于目前大多數(shù)教學(xué)學(xué)生機(jī)器每次啟動(dòng)會(huì)自動(dòng)還原,學(xué)生需重復(fù)配置環(huán)境,浪費(fèi)課堂時(shí)間。另外,如SqlServer、Oracle等常見(jiàn)數(shù)據(jù)庫(kù)軟件,它們占用空間大,運(yùn)行所需要消耗的計(jì)算機(jī)資源較多,這對(duì)于性能一般的計(jì)算機(jī)會(huì)出現(xiàn)卡頓、運(yùn)行緩慢等現(xiàn)象,導(dǎo)致學(xué)生無(wú)法再運(yùn)行或運(yùn)行卡頓其它軟件等問(wèn)題。學(xué)生主要需求在于能根據(jù)自己的需求申請(qǐng)指定的數(shù)據(jù)庫(kù),并能支持任意一臺(tái)機(jī)器均能訪(fǎng)問(wèn),支持?jǐn)?shù)據(jù)庫(kù)備份,當(dāng)操作失誤時(shí)能夠快速還原等。
教師在課堂數(shù)據(jù)庫(kù)教學(xué)當(dāng)中,目前主要存在問(wèn)題是上課地點(diǎn)不統(tǒng)一、課室機(jī)器不同教師之間安裝不同環(huán)境導(dǎo)致沖突,有些機(jī)器甚至自動(dòng)還原,在教學(xué)中重復(fù)配置環(huán)境等浪費(fèi)時(shí)間。所以教師需要一個(gè)獨(dú)立的數(shù)據(jù)庫(kù),并且支持任一地點(diǎn)訪(fǎng)問(wèn),不與其他服務(wù)沖突。
一般情況下,個(gè)人計(jì)算機(jī)的軟件不能達(dá)到“共享”使用的目的。而在我們的教學(xué)過(guò)程中往往需要操作數(shù)據(jù)庫(kù)中共同的數(shù)據(jù),一般方式是從教師數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)后再導(dǎo)入每個(gè)學(xué)生自己的本地?cái)?shù)據(jù)庫(kù),數(shù)據(jù)的遷移會(huì)浪費(fèi)很多時(shí)間,而且還會(huì)因?yàn)閿?shù)據(jù)庫(kù)版本不兼容等原因造成無(wú)法導(dǎo)入或數(shù)據(jù)丟失的問(wèn)題。所以教師的主要需求還有獨(dú)立的數(shù)據(jù)庫(kù)空間,能夠自定義數(shù)據(jù)庫(kù)并能實(shí)現(xiàn)快速共享等。
管理員的需求在于能夠減輕管理員的負(fù)擔(dān),系統(tǒng)能夠自動(dòng)化完成大部分任務(wù)。所以管理員主要需求為擁有可視化管理平臺(tái),能自動(dòng)化管理平臺(tái),自動(dòng)化監(jiān)控資源使用情況,自動(dòng)生成報(bào)表和預(yù)警。
基于SpringBoot技術(shù)開(kāi)發(fā)出一套云數(shù)據(jù)庫(kù)管理系統(tǒng),再通過(guò)Java操作Kubernetes API實(shí)現(xiàn)管理由Kubernetes架構(gòu)搭建的云數(shù)據(jù)庫(kù)平臺(tái)。即實(shí)現(xiàn)了云數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn),又實(shí)現(xiàn)了云數(shù)據(jù)庫(kù)平臺(tái)可視化管理。
基于現(xiàn)有的Kubernetes云計(jì)算平臺(tái),通過(guò)分析其框架原理和API管理接口,搭建出基本的云數(shù)據(jù)庫(kù)平臺(tái)。然后主要根據(jù)對(duì)高校云數(shù)據(jù)庫(kù)的需求,對(duì)其功能和設(shè)計(jì)進(jìn)行創(chuàng)新,以滿(mǎn)足高校對(duì)云數(shù)據(jù)庫(kù)的需求,其主要功能有如下幾個(gè)方面:
(1)支持師生申請(qǐng)自己獨(dú)立的數(shù)據(jù)庫(kù),且根據(jù)管理員設(shè)置的申請(qǐng)限制條件,符合條件系統(tǒng)即可自動(dòng)生成數(shù)據(jù)庫(kù),無(wú)需任何人工審核和運(yùn)維操作;
(2)支持自定義數(shù)據(jù)庫(kù)。如選擇Mysql、Oracle、Redis、MongoDB數(shù)據(jù)庫(kù)等、版本號(hào)、初始環(huán)境;如上課所需環(huán)境需要定制,教師只需通過(guò)拷貝自己的數(shù)據(jù)庫(kù)環(huán)境,即可實(shí)現(xiàn)一鍵分發(fā)至每一位學(xué)生;
圖1:云數(shù)據(jù)庫(kù)平臺(tái)架構(gòu)圖
(3)用戶(hù)數(shù)據(jù)庫(kù)之間環(huán)境沒(méi)有任何影響,每個(gè)用戶(hù)可獨(dú)立操作、修改自己的數(shù)據(jù)庫(kù)環(huán)境;
(4)資源動(dòng)態(tài)可視化。每個(gè)用戶(hù)可查看自己數(shù)據(jù)庫(kù)的資源使用情況;管理員亦可查看每個(gè)用戶(hù)和云數(shù)據(jù)庫(kù)整體集群的資源使用情況;
(5)區(qū)分臨時(shí)數(shù)據(jù)庫(kù)和長(zhǎng)期數(shù)據(jù)庫(kù),臨時(shí)數(shù)據(jù)庫(kù)到期資源自動(dòng)回收,數(shù)據(jù)會(huì)臨時(shí)保存指定期限后刪除,也可申請(qǐng)延期;長(zhǎng)期數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)監(jiān)控使用情況,長(zhǎng)期未使用系統(tǒng)自動(dòng)提醒,避免資源浪費(fèi)。
本文Kubernetes架構(gòu)設(shè)計(jì)在每個(gè)控制節(jié)點(diǎn)都安裝Docker容器,利用Docker容器技術(shù)和Kubernetes容器編排技術(shù)搭建了高校云數(shù)據(jù)庫(kù)平臺(tái),整個(gè)云數(shù)據(jù)庫(kù)平臺(tái)的架構(gòu)如圖1所示。
Kubernetes是Google公司用Go語(yǔ)言開(kāi)發(fā)的一個(gè)開(kāi)源容器集群管理平臺(tái),它可以實(shí)現(xiàn) Docker 容器的自動(dòng)部署維護(hù)、自動(dòng)調(diào)度、服務(wù)發(fā)現(xiàn)、自適應(yīng)負(fù)載伸縮等功能,能高效簡(jiǎn)單地管理Docker容器應(yīng)用[9]。整個(gè)云數(shù)據(jù)庫(kù)平臺(tái)底層采用Docker容器技術(shù)實(shí)現(xiàn)[10]。采用Docker容器部署數(shù)據(jù)庫(kù),可有效節(jié)約資源、部署時(shí)間和啟動(dòng)時(shí)間,且部署多個(gè)數(shù)據(jù)庫(kù)時(shí),每個(gè)容器之間互相隔離,容器之間不會(huì)相互影響,具有獨(dú)立性,能夠區(qū)分計(jì)算資源,可實(shí)現(xiàn)每個(gè)用戶(hù)可根據(jù)自己需求調(diào)整環(huán)境、變量和資源消耗統(tǒng)計(jì)。當(dāng)用戶(hù)需重置或卸載數(shù)據(jù)庫(kù)時(shí),只需重置或卸載其對(duì)應(yīng)的Docker容器即可,實(shí)現(xiàn)一鍵重置或卸載。
相比于傳統(tǒng)模式下安裝數(shù)據(jù)庫(kù),Docker容器技術(shù)只需從鏡像倉(cāng)庫(kù)中拉取我們所需的鏡像,再利用鏡像直接生成對(duì)應(yīng)的容器,即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)的部署,大幅度提高了數(shù)據(jù)庫(kù)部署的時(shí)間,同時(shí)傳統(tǒng)模式比Docker容器要消耗更多的CPU、內(nèi)存和IO資源,因此,采用Docker部署數(shù)據(jù)庫(kù),資源利用率更高。
本文采用多master集群方式部署,master節(jié)點(diǎn)主要負(fù)責(zé)整個(gè)集群的管理,采用3臺(tái)方式部署,任意一臺(tái)master節(jié)點(diǎn)發(fā)生故障時(shí),另外兩臺(tái)還能進(jìn)行正常保證系統(tǒng)的運(yùn)行。三臺(tái)機(jī)器同時(shí)出現(xiàn)故障的概率是相對(duì)較低的,綜合資源利用,三臺(tái)是相對(duì)合適的。而node節(jié)點(diǎn)部署數(shù)量可根據(jù)每臺(tái)node節(jié)點(diǎn)的配置、集群用戶(hù)量、資源使用情況等進(jìn)行彈性伸縮,將資源利用率最大化。
本可視化管理平臺(tái)采用SpringBoot架構(gòu)實(shí)現(xiàn)微服務(wù),最終將其打包成Docker鏡像部署在集群中。通過(guò)Kubernetes API實(shí)現(xiàn)管理和監(jiān)控云數(shù)據(jù)庫(kù)。當(dāng)師生向平臺(tái)申請(qǐng)數(shù)據(jù)庫(kù)時(shí),平時(shí)將根據(jù)申請(qǐng)者的用戶(hù)類(lèi)型、申請(qǐng)的數(shù)據(jù)庫(kù)類(lèi)型、版本抓取相應(yīng)的數(shù)據(jù)庫(kù)鏡像,通過(guò)創(chuàng)建Pod API在指定的Node節(jié)點(diǎn)中創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)容器,同時(shí)采用NodePort的方式將數(shù)據(jù)庫(kù)容器訪(fǎng)問(wèn)端口暴露在云數(shù)據(jù)庫(kù)外,申請(qǐng)者通過(guò)系統(tǒng)分配的Node ip地址和暴露的端口即可實(shí)現(xiàn)訪(fǎng)問(wèn)自己的數(shù)據(jù)庫(kù),并可在自己的賬號(hào)登錄的可視化平臺(tái)中進(jìn)行查看數(shù)據(jù)庫(kù)運(yùn)行狀態(tài),資源消耗情況等,并可進(jìn)行數(shù)據(jù)庫(kù)備份、還原和卸載等操作。
本文通過(guò)研究高校對(duì)云數(shù)據(jù)庫(kù)的需求,進(jìn)行了調(diào)研、需求分析、系統(tǒng)設(shè)計(jì)等方面的研究,并最終設(shè)計(jì)與實(shí)現(xiàn)滿(mǎn)足于高校所需求的云數(shù)據(jù)庫(kù)及其管理平臺(tái)。該設(shè)計(jì)充分利用了高校的服務(wù)器計(jì)算和存儲(chǔ)資源,另一方面降低師生使用數(shù)據(jù)庫(kù)開(kāi)發(fā)的學(xué)習(xí)成本和時(shí)間成本,為高校師生的教學(xué)、學(xué)習(xí)和研究等方面提供優(yōu)質(zhì)的云服務(wù)。云數(shù)據(jù)庫(kù)及其管理平臺(tái)的建設(shè)能夠?yàn)楦咝熒虒W(xué)與研究帶來(lái)極大便利。