楊帆
?
面向負(fù)載均衡的高性能環(huán)加星型云平臺設(shè)計(jì)
楊帆
摘要:目前云平臺存在服務(wù)器的更新造成硬件的浪費(fèi),多個(gè)高性能的服務(wù)器作備份成本太高等問題。基于此運(yùn)用負(fù)載均衡的集群技術(shù),設(shè)計(jì)了一個(gè)兼顧可靠、性能和成本兼顧的云平臺。使用環(huán)型網(wǎng)與星型網(wǎng)相結(jié)合的網(wǎng)絡(luò)結(jié)構(gòu),使計(jì)算的組合形式多樣化,采用數(shù)據(jù)多處備份,提升性能與安全。通過負(fù)載均衡技術(shù)解決網(wǎng)絡(luò)瓶頸問題,使客戶的訪問不會只集中在某個(gè)端點(diǎn)上,減少通信過程中的瓶頸。最后,通過可靠性與性能分析,證明該設(shè)計(jì)在負(fù)載越高的情況下性能表現(xiàn)越好,并且平臺能長期地保持這種狀態(tài)。
關(guān)鍵詞:環(huán)加星網(wǎng);數(shù)據(jù)庫水平與垂直分割;負(fù)載均衡
云計(jì)算平臺需要具有強(qiáng)大的計(jì)算能力,并且必須能適應(yīng)計(jì)算量的不斷增加。針對不斷的增加的計(jì)算量,一般會通過更換高性能的服務(wù)器來解決這一問題,但舊的服務(wù)器就會因此浪費(fèi)。通過使用負(fù)載均衡的集群技術(shù),可以很好地實(shí)現(xiàn)服務(wù)器的分布式計(jì)算,從而提高性能,提升計(jì)算能力。常用的服務(wù)器集群方式都是多層的層次結(jié)構(gòu),存在計(jì)算瓶頸與網(wǎng)絡(luò)線路可靠性不高等問題。針對上述情況,本文采用負(fù)載均衡的集群技術(shù),使用環(huán)型網(wǎng)與星型網(wǎng)相結(jié)合的網(wǎng)絡(luò)結(jié)構(gòu),使計(jì)算的壓力分布到不同計(jì)算機(jī)上,降低局部計(jì)算機(jī)的負(fù)擔(dān)和風(fēng)險(xiǎn),還提供多鏈路訪問,從而使得計(jì)算平臺的性能與可靠性都得到提升。
本文的云平臺的結(jié)構(gòu)如圖1所示:

圖1 云平臺的結(jié)構(gòu)圖
如圖1所示,服務(wù)器集群分工明確,web服務(wù)器集群提供用戶訪問功能,常用數(shù)據(jù)庫集群提供數(shù)據(jù)存儲,長期備份數(shù)據(jù)庫集群提供數(shù)據(jù)的長期備份和重要數(shù)據(jù)的存儲功能,性能監(jiān)測集群根據(jù)服務(wù)器性能的具體信息,為注冊用戶提供特定服務(wù)。云平臺的網(wǎng)絡(luò)拓?fù)鋱D如圖2所示:

圖2 云平臺的網(wǎng)絡(luò)拓?fù)鋱D(主要功能區(qū))
在圖2中有4個(gè)環(huán)狀結(jié)構(gòu),它們是web服務(wù)器集群,用戶使用web service獲得服務(wù),web服務(wù)器集群提供相同的服務(wù),當(dāng)用戶使用web service請求服務(wù)時(shí),負(fù)載均衡設(shè)備會根據(jù)web服務(wù)器的性能及網(wǎng)絡(luò)情況來決定訪問某個(gè)服務(wù)器集群。中間是環(huán)型網(wǎng)結(jié)構(gòu)的數(shù)據(jù)庫集群,外層環(huán)網(wǎng)是常用數(shù)據(jù)庫集群,中間是存儲和備份重要數(shù)據(jù)的數(shù)據(jù)庫集群。當(dāng)用戶注冊使用服務(wù)時(shí),性能監(jiān)測服務(wù)器集群會根據(jù)web服務(wù)器集群的性能,來決定用戶在那一個(gè)服務(wù)器中注冊并生成特定的web service,提供給用戶,用戶從而可以訪問web服務(wù)器。
針對主要功能區(qū)的數(shù)據(jù)庫網(wǎng)絡(luò)詳細(xì)介紹如圖3所示:

圖3 據(jù)庫網(wǎng)絡(luò)拓?fù)鋱D
如圖3所示,數(shù)據(jù)庫網(wǎng)絡(luò)中有3個(gè)環(huán)狀結(jié)構(gòu),主要作用是以防網(wǎng)絡(luò)某處出現(xiàn)故障時(shí),還能繼續(xù)通訊。最中心的數(shù)據(jù)庫集群是存儲重要數(shù)據(jù)和長期備份的數(shù)據(jù)庫。中環(huán)上的數(shù)據(jù)庫是外環(huán)的數(shù)據(jù)庫的熱備份,一旦外環(huán)數(shù)據(jù)庫出現(xiàn)故障,立刻切換。web服務(wù)器訪問外環(huán)數(shù)據(jù)庫,具體訪問那個(gè)數(shù)據(jù)庫,則根據(jù)用戶登錄時(shí)的ID號,具有相似性的ID號是同一個(gè)單位,訪問相同的數(shù)據(jù)庫集群,反之則訪問不同的數(shù)據(jù)庫集群。
拓?fù)浣Y(jié)構(gòu)中關(guān)鍵設(shè)備的功能或特點(diǎn):
W1:它是ICX數(shù)據(jù)庫路由器,能使web服務(wù)器同時(shí)對多個(gè)數(shù)據(jù)庫進(jìn)行寫入,可以實(shí)時(shí)切換數(shù)據(jù)庫,按計(jì)劃地在數(shù)據(jù)庫間進(jìn)行數(shù)據(jù)更新,并能對數(shù)據(jù)庫的訪問事務(wù)進(jìn)行過濾和分發(fā)。
W2:外環(huán),為web服務(wù)器連接ICX數(shù)據(jù)庫路由器提供多個(gè)選擇,保證它能訪問到數(shù)據(jù)庫。
W3:主數(shù)據(jù)庫,是web服務(wù)器主要訪問的數(shù)據(jù)庫。
Z1:中環(huán),讓內(nèi)環(huán)數(shù)據(jù)庫可以連接多個(gè)中環(huán)數(shù)據(jù)庫,也是提供了多個(gè)連接的選擇,以防線路故障。
Z2:每2個(gè)數(shù)據(jù)庫服務(wù)器組成一組,可以作雙機(jī)熱備份。
Z3:從數(shù)據(jù)庫,主要功能是主數(shù)據(jù)庫的熱備,其次它會有計(jì)劃地把新數(shù)據(jù)更新到內(nèi)環(huán)數(shù)據(jù)庫,或在故障和超負(fù)載后作為主服務(wù)器使用,故障修復(fù)后,還原主數(shù)據(jù)庫。
Z4:RAID10的磁盤陣列,RAID10是RAID1與RAID0的結(jié)合,擁有較高的讀寫效率和較高的數(shù)據(jù)保護(hù)、恢復(fù)能力。但它安全性不高,通過把它放置于最內(nèi)層,通過內(nèi)網(wǎng)IP的方式與外網(wǎng)隔絕,提高安全性。
N1:做RAID5的磁盤陳列,它能提供大容量數(shù)據(jù)儲存及高安全性保護(hù)。
N2:內(nèi)環(huán)數(shù)據(jù)庫,除了存儲重要數(shù)據(jù)和長期備份功能以外,還可以把數(shù)據(jù)庫中臨時(shí)無用數(shù)據(jù)刪除,把少量的使用數(shù)據(jù)或要長期保存的數(shù)據(jù)、重要數(shù)據(jù),轉(zhuǎn)移到內(nèi)環(huán)庫中保存,盡量減少上一層數(shù)據(jù)庫的負(fù)荷來提高效率。
N3:內(nèi)環(huán),也是以防環(huán)上某處網(wǎng)絡(luò)故障,保證連通性,其次內(nèi)環(huán)上部署多個(gè)數(shù)據(jù)庫,以防某個(gè)內(nèi)環(huán)數(shù)據(jù)庫超負(fù)荷或故障。
環(huán)上的設(shè)備的數(shù)量不是固定的,比如外環(huán)上可以不只是4個(gè)ICX數(shù)據(jù)庫路由器,每個(gè)ICX數(shù)據(jù)庫路由器連接多個(gè)數(shù)據(jù)庫服務(wù)器,ICX數(shù)據(jù)庫路由器與數(shù)據(jù)庫服務(wù)器組之間的具體對應(yīng)關(guān)系要根據(jù)現(xiàn)實(shí)的負(fù)荷來決定的,如果用戶數(shù)量增多,肯定要增加設(shè)備。除了整個(gè)網(wǎng)絡(luò)的設(shè)計(jì)外,服務(wù)器間集群的組織方式也很重要,數(shù)據(jù)庫的水平與垂直分割的策略如圖4所示:

圖4 數(shù)據(jù)庫的水平與垂直分割的集群示意圖
FG1:把數(shù)據(jù)庫按功能分割,不同的服務(wù)訪問不同的設(shè)備,把負(fù)荷分散,提高性能。
FG2:在實(shí)際情況中,用戶需要的查詢服務(wù)比操作服務(wù)要多很多,因此查詢與操作分開設(shè)備進(jìn)行,使性能得到提升。
備份管理層對查詢層和操作層進(jìn)行管理,主要是清理臨時(shí)無用數(shù)據(jù)和把不常用但要長期保存的數(shù)據(jù)進(jìn)行轉(zhuǎn)移到此層,目的就是減少上兩層的數(shù)據(jù)量,減少設(shè)備負(fù)荷。
假設(shè)本平臺在運(yùn)行一個(gè)某產(chǎn)品的網(wǎng)站,此網(wǎng)站有產(chǎn)品展示功能、用戶注冊功能、產(chǎn)品論壇瀏覽等,由于產(chǎn)品展示功能、用戶注冊功能、產(chǎn)品論壇瀏覽的模塊相對獨(dú)立,因此在數(shù)據(jù)庫的設(shè)計(jì)中,進(jìn)行相應(yīng)的垂直分割。除此之外,對數(shù)據(jù)庫的設(shè)計(jì)也進(jìn)行一定的優(yōu)化,對數(shù)據(jù)庫表的進(jìn)行垂直與水平分割,如圖5所示:

圖5 表的垂直與水平分割
在設(shè)計(jì)數(shù)據(jù)庫的表時(shí),某些表的數(shù)據(jù)可能會很多,造成表變得很長,這不利于查找,所以我們使用水平分割,把它變成多個(gè)表來存放,在web服務(wù)中的查找數(shù)據(jù)前,使用哈希函數(shù)來定位需要查找的數(shù)據(jù)在那個(gè)表中,提高查找速度。
表中的一些列是經(jīng)常要查找的,比如用戶表中的用戶名、密碼、用戶id列,但省份、年齡不是經(jīng)常查找的,使用垂直分割,把經(jīng)常查找的在一個(gè)表中,不經(jīng)常查找的內(nèi)容放置在別外一個(gè)表中,提高效率。
除了數(shù)據(jù)中心外,我們的平臺還要通過web服務(wù)器對外提供服務(wù),為了能提供高性能和可靠的服務(wù),我們對web服務(wù)器進(jìn)行了多環(huán)加星式的服務(wù)器集群,環(huán)的集群有利于流水線的計(jì)算,而星型的集群則方便分布式的計(jì)算。此集群方式的如圖6所示:

圖6 多環(huán)加星結(jié)合特定服務(wù)的集群
2.1可靠性分析
本文中的云平臺的設(shè)計(jì)采用最多的是環(huán)型網(wǎng)絡(luò)與星型網(wǎng)結(jié)合的方式,這樣保證平臺不會只因某處的網(wǎng)絡(luò)故障而停止服務(wù)。對硬件設(shè)備采用冗余方式,并且使用磁盤陳列的存儲方式,因此,單個(gè)設(shè)備的故障也不會造成停止服務(wù);其次,我們充分考慮負(fù)載均衡,盡量讓設(shè)備及網(wǎng)絡(luò)不處于負(fù)荷過重,以免造成死機(jī)。下面以一故障示意圖來顯示它的特點(diǎn),如圖7所示:

圖7 故障示意圖
現(xiàn)在我們來計(jì)算一下本平臺因故障而完全停止服務(wù)的概率,現(xiàn)設(shè)每條線路出故障的概率為px,設(shè)備出故障的概率為ps,那么對于所有web服務(wù)器集群都不能提供服務(wù)的概率(pw)是(以本論文中的圖2的設(shè)備數(shù)量為例):
pw=(px2+ps4)4
因?yàn)榄h(huán)結(jié)構(gòu)一般出現(xiàn)2處故障,網(wǎng)絡(luò)才失去通訊能力所以有px2,而web服務(wù)器集群中有4個(gè)服務(wù)器,最差的情況就是所有服務(wù)器都故障,這個(gè)集群就不能提供服務(wù),所以有ps4,最后,服務(wù)器集群有4個(gè),所以有(px2+ps4)4。
數(shù)據(jù)中心不能提供服務(wù)的概率(pd)是:
pd= px16+ ps4(與上面的思想類似)
因?yàn)樘峁┓?wù)的部分是在環(huán)形結(jié)構(gòu)中,所以本平臺完全不能提供服務(wù)的概率(P)是:
P=pw+pd=(px2+ps4)4+ px16+ ps4
在現(xiàn)實(shí)中,一條正常的線路,工作20小時(shí),出現(xiàn)一次故障,而這故障通過發(fā)現(xiàn)、檢測、修復(fù)的時(shí)間一般為1小時(shí),所以我們的px大概可以估值為1/20。同樣的估值方式ps大概為1/20,從而得出P約為: 0.0000062500即約為1/160000,即18年中可能有1小時(shí)故障使得整個(gè)平臺不能提供服務(wù)。3.2性能分析
本平臺的性能主要取決于web 服務(wù)器集群,它可以為上面運(yùn)行的服務(wù)提供多種計(jì)算形式:流水線計(jì)算、分布式計(jì)算、流水線與分布式混合式計(jì)算。
如果服務(wù)可以分成多個(gè)子任務(wù)來逐步計(jì)算,并且這種服務(wù)需要持續(xù)地對外提供,那么我們可以用流水線完成,這里我們設(shè)n為任務(wù)數(shù),每個(gè)任務(wù)分成k個(gè)子任務(wù), △ti為第i個(gè)子任務(wù)所需的時(shí)間, TK1是流水線完成n個(gè)任務(wù)所需的時(shí)間:
TK1= ∑△ti+ ( n-1)max(△t1,△t2,…,△tk)
如果不用流水線,用非本平臺的單機(jī)來完成任務(wù),那么完成任務(wù)的時(shí)間(TK2)為:
TK2= (∑△ti)+(n-1) (∑△ti)
假設(shè)現(xiàn)有100個(gè)任務(wù),每個(gè)任務(wù)分成10個(gè)子任務(wù),每個(gè)子任務(wù)完成的時(shí)間為1秒,那么TK1為199秒,而TK2 為1000秒,相差4倍,并且隨著任務(wù)數(shù)的增加,這個(gè)倍數(shù)也隨著增加。
如果服務(wù)可以分成多個(gè)子任務(wù)來并行計(jì)算,那么我們可以用分布式來完成,分布式計(jì)算的性能分析如下:
(分布式)TK1=( n)max(△t1,△t2,…,△tk)
(一般)TK2= (∑△ti)+(n-1) (∑△ti)
如果假設(shè)的情況與流水線的例子一樣,那么TK1為100秒,而TK2為1000秒,相差9倍,并且隨著任務(wù)數(shù)的增加,這個(gè)倍數(shù)也隨著增加。性能分析如圖8所示:

圖8 性能分析對比圖
從圖8中可以看出單機(jī)計(jì)算與流水線和分布式計(jì)算的差別。
本文提出的環(huán)形加星型網(wǎng)絡(luò)結(jié)構(gòu)的云平臺設(shè)計(jì),計(jì)算資源的組織方式比較靈活多變,通過負(fù)載均衡、數(shù)據(jù)庫多處備份、數(shù)據(jù)表的垂直分割與水平分割方案,保證云平臺的性能的同時(shí),兼顧系統(tǒng)的安全性與可靠性。通過對系統(tǒng)的安全性與可靠性分析,也證明系統(tǒng)兼顧上述兩個(gè)要求。
在接下來的工作里面,將從服務(wù)器檢索的層面進(jìn)一步提高系統(tǒng)性能,使用更高效的數(shù)據(jù)結(jié)構(gòu)來構(gòu)建服務(wù)器節(jié)點(diǎn)索引,輔助檢索過程,提高效率。
參考文獻(xiàn)
[1] 黎宏劍,劉恒,黃廣文,等. 基于Hadoop的海量電信數(shù)據(jù)云計(jì)算平臺研究[J].電信科學(xué), 2012,8: 80-85.
[2] 黃河,劉旭東,孫海龍.云計(jì)算環(huán)境下服務(wù)中間件動態(tài)管理框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2013-01,30-35.
[3] 羅軍舟,金嘉暉,宋愛波,等.云計(jì)算:體系架構(gòu)與關(guān)鍵技術(shù)[C].《通信學(xué)報(bào)》學(xué)術(shù)論壇暨2011云計(jì)算學(xué)術(shù)會議論文集.2011:3-21.
[4] 丁澤柳,郭得科,申建偉,等. 面向云計(jì)算的數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)溲芯縖J].國防科技大學(xué)學(xué)報(bào),2011,33(6):1-6.
[5] 劉正偉,文中領(lǐng),張海濤等.云計(jì)算和云數(shù)據(jù)管理技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(z1):26-31.
[6] ZHANG Liangjie,ZHOU Qun.CCOA:cloud computing open architecture[C]//Proc of IEEE International Conference on Web Services.Washington DC:IEEE Computer Society,2009;607-616.
收稿日期:(2015.01.09)
作者簡介:楊帆(1990-),男,復(fù)旦大學(xué),計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室,碩士研究生,研究方向:云計(jì)算,人機(jī)交互,虛擬現(xiàn)實(shí),上海,201203
文章編號:1007-757X(2015)12-0035-03
中圖分類號:TP302
文獻(xiàn)標(biāo)志碼:A