王 鋒,張 璟,張 彤,馬維綱
(西安理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,西安 710048)
陜西省在101個(gè)縣(區(qū))已經(jīng)建立了縣級(jí)農(nóng)村飲水安全水質(zhì)監(jiān)測(cè)中心,每個(gè)水質(zhì)監(jiān)測(cè)中心配備了能夠滿足檢測(cè)需要的設(shè)備、儀器和取樣車,實(shí)現(xiàn)了縣級(jí)農(nóng)村飲水工程水質(zhì)監(jiān)測(cè)網(wǎng)絡(luò)全覆蓋.這些檢測(cè)信息資源若不能有效收集處理,就會(huì)影響主管部門的決策.為此,建立全省范圍的水質(zhì)檢測(cè)收集系統(tǒng)很有必要,該系統(tǒng)能為相關(guān)部門對(duì)農(nóng)村飲用水安全問(wèn)題做出快速科學(xué)的決策與工程實(shí)施提供有力支持.要建成該系統(tǒng),需要解決以下問(wèn)題:1)該系統(tǒng)同時(shí)傳輸大量數(shù)據(jù)有共同的特性,若開(kāi)發(fā)類似的系統(tǒng)需要耗費(fèi)大量的人力和物力資源,如何合理共享軟硬件資源需要解決的問(wèn)題.2)該系統(tǒng)有上千個(gè)用戶,每個(gè)用戶同時(shí)提交大量的數(shù)據(jù)集,同時(shí)提交的數(shù)據(jù)量達(dá)到TB級(jí)別,如何實(shí)現(xiàn)高效數(shù)據(jù)訪問(wèn)與資源分配問(wèn)題.
近幾年國(guó)內(nèi)外云計(jì)算的發(fā)展可以用“風(fēng)起云涌”來(lái)形容:各大傳統(tǒng)IT運(yùn)營(yíng)商紛紛在其核心業(yè)務(wù)上推出云計(jì)算服務(wù);新興云計(jì)算服務(wù)提供商不斷推出云平臺(tái)基礎(chǔ)架構(gòu)和管理系統(tǒng),例如OpenStack、CloudStack及Eucalyptus等.
Eucalyptus源于美國(guó)政府支持的加州大學(xué)圣巴巴拉分校研究項(xiàng)目,已轉(zhuǎn)為Eucalyptus System公司商業(yè)化運(yùn)作,被HP公司收購(gòu),但是其核心代碼仍是開(kāi)源,為服務(wù)提供商及企業(yè)用戶創(chuàng)建私有云或混合云提供了基礎(chǔ)設(shè)施服務(wù)解決方案.Eucalyptus平臺(tái)的API(應(yīng)用程序接口)可以全面兼容著名云計(jì)算平臺(tái)Amazon的API,已擁有虛擬化環(huán)境的用戶可使用Eucalyptus云平臺(tái)增強(qiáng)自己的虛擬化環(huán)境.Eucalyptus平臺(tái)是基于基礎(chǔ)設(shè)施服務(wù)(IaaS)的,本文的云平臺(tái)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用桉樹(shù)的EDGE 模式.Eucalyptus提供IaaS級(jí)的私有云服務(wù).它由云控制器(Cloud Controller,CLC)、集群控制器(Cluster Controller,CC)、節(jié)點(diǎn)控制器(Node Controller,NC)、存儲(chǔ)控制器(Storage Controller,SC)以及存儲(chǔ)服務(wù)(Walrus)組成.云控制器為用戶提供訪問(wèn)整個(gè)云平臺(tái)的唯一接口,接受用戶請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給具體的服務(wù)組件;集群控制器負(fù)責(zé)管理集群內(nèi)的所有節(jié)點(diǎn)以及所有節(jié)點(diǎn)的資源使用情況和網(wǎng)絡(luò)通信情況;節(jié)點(diǎn)控制器部署在具體的計(jì)算節(jié)點(diǎn)上,負(fù)責(zé)監(jiān)控和管理本節(jié)點(diǎn)上的虛擬機(jī)的生命周期和資源使用情況;存儲(chǔ)控制器為每一個(gè)虛擬機(jī)提供虛擬磁盤,安裝存儲(chǔ)控制器的物理機(jī)被虛擬化成一個(gè)虛擬磁盤池,用戶可為每個(gè)虛擬機(jī)掛載指定配額大小的虛擬磁盤,并進(jìn)行遠(yuǎn)程網(wǎng)絡(luò)IO訪問(wèn);Walrus以桶、對(duì)象的方式存儲(chǔ)大容量靜態(tài)數(shù)據(jù),為用戶提供上傳、下載、羅列等基本存儲(chǔ)服務(wù).網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示.
圖1 EDGE 模式網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
多租戶的概念最早起源于軟件領(lǐng)域,指一個(gè)軟件實(shí)例服務(wù)于多個(gè)用戶的架構(gòu).多租戶作為云計(jì)算的核心計(jì)算,它解決了在相同的系統(tǒng)資源或軟件應(yīng)用中實(shí)現(xiàn)多用戶共同訪問(wèn)和使用.同時(shí)應(yīng)該保證系統(tǒng)安全性,并確保多用戶之間數(shù)據(jù)的相互隔離.在數(shù)據(jù)層面,需要切割數(shù)據(jù)庫(kù)實(shí)現(xiàn)多租戶的數(shù)據(jù)管理[1–3].
21世紀(jì)的今天,云計(jì)算已經(jīng)成為 IT 領(lǐng)域一個(gè)新浪潮.各大云計(jì)算廠商紛紛推出了自己的云戰(zhàn)略,SalesForce的force.com是面向特定領(lǐng)域(CRM),其領(lǐng)域客戶需求共性明顯,因此采用共享數(shù)據(jù)表和Shared Everthing架構(gòu)非常合適并取得巨大成功.Windows Azure 以云技術(shù)為核心提供了軟件+服務(wù)的計(jì)算方法.SQL Azure采用共享數(shù)據(jù)庫(kù)進(jìn)程模式.Amazon推出彈性計(jì)算云(EC2)為企業(yè)提供計(jì)算服務(wù),和簡(jiǎn)單存儲(chǔ)服務(wù)(S3)為企業(yè)提供存儲(chǔ)服務(wù).Google搜索引擎建立分布在全球 200 多個(gè)國(guó)家和地區(qū),超過(guò) 100 萬(wàn)臺(tái)服務(wù)器的云計(jì)算環(huán)境下.在 Google 的眾多應(yīng)用中,多租戶作為云計(jì)算的核心技術(shù)得到了更為廣泛的應(yīng)用,比如我們經(jīng)常使用的 Google Docs,Google App Engine 等應(yīng)用,都是多租戶技術(shù)在實(shí)際應(yīng)用中的應(yīng)用體現(xiàn).
國(guó)內(nèi)主流的SaaS提供商有Xtools、阿里軟件、800app、金算盤等.
隨著云計(jì)算的興起和推廣應(yīng)用,多租戶技術(shù)也越來(lái)越成熟,借助多租戶技術(shù)來(lái)架構(gòu)農(nóng)村飲水規(guī)劃調(diào)查系統(tǒng),是農(nóng)村飲用水規(guī)劃調(diào)查快速提升信息化水平的捷徑.本文正是基于這樣的背景來(lái)研究如何在農(nóng)村飲用水規(guī)劃化系統(tǒng)中引入多租戶模式,提升農(nóng)村飲用水檢測(cè)信息化水平,降低農(nóng)村信息化投入成本和維護(hù)成本,提高農(nóng)村飲用水質(zhì)量.“陜西省農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫(kù)系統(tǒng)”利用Eucalyptus云計(jì)算平臺(tái),建立一個(gè)多租戶的共享數(shù)據(jù)庫(kù)共享schema水資源檢測(cè)系統(tǒng)能解決目前存在的難題.
“陜西省農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫(kù)系統(tǒng)”在Windows環(huán)境下實(shí)現(xiàn)了農(nóng)村飲用水安全的工程調(diào)查信息在網(wǎng)上的傳輸、轉(zhuǎn)換、處理、匯總、查詢、分析,為省政府和相關(guān)部門在對(duì)農(nóng)村飲用水安全問(wèn)題做出快速科學(xué)的決策與工程實(shí)施提供了強(qiáng)有力的支持.系統(tǒng)主要包括數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)審核、數(shù)據(jù)對(duì)比等12個(gè)功能模塊.多租戶水利系統(tǒng)部署拓?fù)淙鐖D2所示.農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫(kù)系統(tǒng)的Web 前端和數(shù)據(jù)庫(kù).
圖2 數(shù)據(jù)庫(kù)系統(tǒng)部署拓?fù)鋱D
單獨(dú)部署,每個(gè)租戶都有自己Web虛擬機(jī),分配有公有IP,每個(gè)租戶都有自己安全組和防火墻強(qiáng)規(guī)則,租戶的Web服務(wù)器放在自己的安全組里,不同租戶的Web虛擬機(jī)網(wǎng)絡(luò)二層不通.
普通租戶可以共享數(shù)據(jù)庫(kù)服務(wù)器,高級(jí)租戶獨(dú)享數(shù)據(jù)服務(wù)器.所有數(shù)據(jù)庫(kù)在同一安全組,設(shè)定相應(yīng)的防火墻規(guī)則.整個(gè)系統(tǒng)部署在一個(gè)Eucalyptus Account內(nèi).Web虛擬服務(wù)器使用instance-store 的鏡像,在啟動(dòng)虛擬機(jī)通過(guò)user-data 自動(dòng)把要使用的數(shù)據(jù)庫(kù)信息傳給Web server.MSSQL虛擬機(jī)可以使用EBS-base的鏡像(20 G),同時(shí)分配EBS volume用作數(shù)據(jù)盤.
數(shù)據(jù)庫(kù)設(shè)計(jì)是多租戶實(shí)現(xiàn)上的最重要技術(shù).租戶與租戶之間的數(shù)據(jù)需要相互隔離保證數(shù)據(jù)的安全性[4].由于各租戶數(shù)據(jù)之間有共同的數(shù)據(jù)特性,所以多租戶數(shù)據(jù)的存儲(chǔ)方式采用共享數(shù)據(jù)庫(kù)共享模式(又稱共享模式).
在數(shù)據(jù)庫(kù)表設(shè)計(jì)方面,本系統(tǒng)采用多個(gè)租戶使用相同的數(shù)據(jù)庫(kù)和相同的表.為了將不同租戶的數(shù)據(jù)進(jìn)行隔離,所有表包含一個(gè)Water_id字段.在查詢或存儲(chǔ)表數(shù)據(jù)時(shí),需要應(yīng)用Water_id字段對(duì)數(shù)據(jù)進(jìn)行強(qiáng)制隔離.數(shù)據(jù)庫(kù)表舉例:以下兩張表是本數(shù)據(jù)庫(kù)用到的主要表.表1和表2有共同的租戶字段Water_ID,表1是村莊信息表,查詢?cè)摫硇畔⑿栎斎胱鈶鬢ater_ID;表2為飲水點(diǎn)情況表,所有租戶的檢測(cè)信息都存放在該表中,租戶之間的通過(guò)租戶Water_ID進(jìn)行隔離.當(dāng)租戶需要對(duì)自己的業(yè)務(wù)數(shù)據(jù)操作時(shí),每條操作SQL條件語(yǔ)句需要增加Water_ID=‘?’區(qū)分不同租戶,防止其它租戶讀取本租戶信息.通過(guò)租戶Water_ID可以將表1和表2聯(lián)系起來(lái).
表1 村莊信息表
表2 飲水點(diǎn)情況表
例如:查詢租戶號(hào)001的隔離語(yǔ)句如下:
當(dāng)一個(gè)新租戶加入時(shí),根據(jù)租戶的用戶數(shù)和服務(wù)質(zhì)量要求需要計(jì)算為租戶分配的資源數(shù)量,資源數(shù)量用于保障租戶的服務(wù)質(zhì)量,租戶放置算法將新加入的租戶放置到資源節(jié)點(diǎn)上,使之既滿足租戶的資源需求,同時(shí)使資源供應(yīng)商的資源利用率最大化.對(duì)于應(yīng)用放置方面,文獻(xiàn)[5,6]對(duì)于多租戶資源動(dòng)態(tài)分配策略進(jìn)行研究,文獻(xiàn)[7]對(duì)多租戶安全資源分配算法和安全服務(wù)調(diào)度框架進(jìn)行研究.文獻(xiàn)[8]對(duì)多租戶系統(tǒng)進(jìn)行動(dòng)態(tài)的擴(kuò)展,運(yùn)用裝箱策略管理多租戶云應(yīng)用程序中的存儲(chǔ)資源.文獻(xiàn)[9]應(yīng)用遺傳算法對(duì)Android設(shè)備驅(qū)動(dòng)程序的未知安全漏洞進(jìn)行檢測(cè).文獻(xiàn)[10]以完工時(shí)間、機(jī)器能耗和工人操作機(jī)器的舒適度作為柔性作業(yè)車間調(diào)度問(wèn)題的多目標(biāo)函數(shù),利用改進(jìn)遺傳算法對(duì)其進(jìn)行優(yōu)化研究.本文在以往的研究基礎(chǔ)上提出了多租戶改進(jìn)遺傳放置算法(Multi-tenant Improved Genetic Placement Algorithm,MIGPA).既滿足租戶的資源需求,同時(shí)使資源利用率最大化.
通過(guò)MIGPA將租戶放置到合適的虛擬機(jī)中,生成租戶放置到服務(wù)器的序列.本文采用裝箱問(wèn)題中基于群體的編碼方式,對(duì)租戶從1,2到n進(jìn)行編號(hào),采用字母A-Z來(lái)表示服務(wù)器的編號(hào).若有租戶1,2,3,4,5,6,7;服務(wù)器A,B,C,D,E,F.若租戶2,4,6放置到服務(wù)器B上,則有B={2,4,6};租戶1,3放置到服務(wù)器A上,則有A={1,3};租戶5,7放置到服務(wù)器C上,則有C={5,7};則染色體可以記為BAC(B={2,4,6},A={1,3},C={5,7}).執(zhí)行多次租戶放置算法形成多個(gè)染色體,用遺傳算法實(shí)現(xiàn)租戶占用的服務(wù)器資源最少及利用率最高.多租戶數(shù)據(jù)庫(kù)系統(tǒng)主要由外部負(fù)載、數(shù)據(jù)庫(kù)節(jié)點(diǎn)和租戶數(shù)據(jù)庫(kù)副本等幾方面構(gòu)成,其參數(shù)主要包括用于描述節(jié)點(diǎn)、租戶以及負(fù)載的基本參數(shù)使用的一些符號(hào)如表3所示.
表3 基本參數(shù)
本系統(tǒng)為實(shí)現(xiàn)服務(wù)器資源利用率最大化,設(shè)計(jì)了多租戶改進(jìn)遺傳放置算法(MIGPA)算法.其中部分參數(shù)含義見(jiàn)表3,其余參數(shù)表示如下:Pc:交叉發(fā)生的概率;Pm:變異發(fā)生的概率;M:種群規(guī)模;Gen:終止進(jìn)化的代數(shù);Tf:進(jìn)化產(chǎn)生的任何一個(gè)個(gè)體的適應(yīng)度函數(shù)超過(guò)Tf,則可以終止進(jìn)化;適應(yīng)度函數(shù),N是服務(wù)器數(shù)量;OldPop表示舊種群;NewPop表示新種群.
算法.多租戶改進(jìn)遺傳放置算法Procedure BFD初始化Pc、Pm、M、Gen、M 0.8=>Pc 0.09=>Pm 30=>M 20=>Gen 0=>i=>j初始化服務(wù)器剩余資源S[n]={S1,S2,…,Si,…,Sn}X個(gè)租戶加入隊(duì)列Q
while(隊(duì)列Q不為空)租戶出隊(duì)T[i]=隊(duì)列Q的隊(duì)頭出隊(duì)while(j 本文研究租戶放置算法目的是在保障租戶服務(wù)質(zhì)量的前提下提高服務(wù)器資源利用率.采用虛擬化的方法,在租戶資源分配初期為租戶分配合適的資源量,并通過(guò)租戶放置算法提高服務(wù)器使用率,減少租戶部署時(shí)期的物理服務(wù)器的使用數(shù)量,降低服務(wù)供應(yīng)商的成本.本系統(tǒng)通過(guò)以下幾個(gè)實(shí)驗(yàn)進(jìn)行測(cè)試,搭建的測(cè)試環(huán)境如下. 硬件:CC和SC部署在一臺(tái)IBM X3850服務(wù)器;CLC和Walrus部署在一臺(tái)IBM X3850服務(wù)器;NC節(jié)點(diǎn)使用30臺(tái)IBM 3550服務(wù)器;所有服務(wù)器安裝centos6.5操作系統(tǒng);系統(tǒng)運(yùn)行于NC節(jié)點(diǎn)的虛擬機(jī);本次測(cè)試采用LoadRunner. 實(shí)驗(yàn)一.優(yōu)化過(guò)程實(shí)驗(yàn). 測(cè)試放置算法的優(yōu)化過(guò)程.用LoadRunner模擬注冊(cè)50個(gè)租戶,每個(gè)租戶用戶數(shù)在10–50之間,系統(tǒng)響應(yīng)時(shí)間為0.1到2 s,農(nóng)村飲水規(guī)劃調(diào)查數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)生90個(gè)虛擬機(jī)分配給90個(gè)租戶.放置程序需要將90個(gè)虛擬機(jī)放置到30臺(tái)服務(wù)器中.90個(gè)租戶的用戶并發(fā)訪問(wèn)水利管理系統(tǒng).采用Matlab實(shí)現(xiàn)遺傳算法,設(shè)置交叉概率為0.8,變異概率為0.09,種群的個(gè)數(shù)為30,遺傳代數(shù)為20.圖3顯示了將90個(gè)租戶放置到30臺(tái)服務(wù)器的優(yōu)化過(guò)程.進(jìn)化次數(shù)越多,物理服務(wù)器占用的個(gè)數(shù)就越少.在20代之前,物理服務(wù)器數(shù)量變化較大,之后就逐漸穩(wěn)定.租戶放置算法很快得到了最優(yōu)解. 實(shí)驗(yàn)二.占用服務(wù)器資源實(shí)驗(yàn). 在滿足租戶服務(wù)質(zhì)量要求的基礎(chǔ)上,采用Next Fit,Best Fit兩種啟發(fā)式算法同本文提出MIGPA進(jìn)行比較,使得需要的服務(wù)器數(shù)量最少. Next Fit(NF)算法:將租戶和服務(wù)器編序號(hào),按照租戶序號(hào)依次放置到各個(gè)服務(wù)器中,若低序號(hào)服務(wù)器資源不夠,則依次比較是否能放入下一個(gè)高序號(hào)服務(wù)器中,直到放置完成. Best Fit(BF)算法:將租戶和服務(wù)器編序號(hào),依次將租戶放置到剩余資源最少且能放置該租戶的物理服務(wù)器中. 在25臺(tái)服務(wù)器上放置租戶.四種租戶放置算法的比較結(jié)果如表4所示.本文提出的MIGPA同NF、BF和貪心算法相比,使用的物理服務(wù)器數(shù)量最少,當(dāng)租戶數(shù)量達(dá)到90個(gè)時(shí),NF算法的服務(wù)器已經(jīng)不能繼續(xù)放置租戶了.但是隨著租戶數(shù)量增多,MIGPA優(yōu)勢(shì)越來(lái)越明顯. 表5 占用服務(wù)器資源實(shí)驗(yàn) 實(shí)驗(yàn)三.服務(wù)器資源利用率實(shí)驗(yàn). 進(jìn)一步測(cè)試MIGPA的CPU資源利用率.選取3臺(tái)服務(wù)器Server1、Server2和Server3,測(cè)試時(shí)間為30小時(shí),實(shí)驗(yàn)結(jié)果表明MIGPA可以為租戶搜索到合適的服務(wù)器,CPU資源利用率高,滿足租戶的服務(wù)質(zhì)量要求.結(jié)果如圖3所示. 本文應(yīng)用Eucalyptus的EDGE 網(wǎng)絡(luò)模式建立了云平臺(tái),分析了多租戶共享數(shù)據(jù)庫(kù)模式系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),提出了多租戶改進(jìn)遺傳放置算法,并和Next Fit、Best Fit和貪心算法進(jìn)行比較,本文提出的放置算法在隨著租戶數(shù)量增加,使用的服務(wù)器數(shù)量會(huì)相對(duì)減少,提高了資源利用率,為租戶提供了滿意的服務(wù)質(zhì)量.通過(guò)實(shí)驗(yàn)證明了本文提出的MIGPA可以較好地保證租戶服務(wù)質(zhì)量并提高服務(wù)器資源利用率. 圖3 MIGPA服務(wù)器CPU資源利用率實(shí)驗(yàn)4 性能測(cè)試
5 結(jié)論