引言
云計算是近幾年互聯(lián)網(wǎng)的最熱門話題,它是并行計算、分布式計算、網(wǎng)格計算等科學(xué)研究領(lǐng)域進入商業(yè)化階段的必然結(jié)果。當(dāng)初提出云計算概念時,主要是基于現(xiàn)有IT構(gòu)建與使用中的基礎(chǔ)投入不能充分利用的情況下,提出買IT設(shè)備不能租IT服務(wù)的想法,讓企業(yè)、個人用戶將自己數(shù)據(jù)、計算能力都放在“云”端,用戶不管在全球任何地方只要連接上網(wǎng),就能獲取自己數(shù)據(jù)及計算結(jié)果。隨著云計算的發(fā)展,知名大企業(yè)(例如谷歌、微軟、華為)紛紛通過構(gòu)建自己的“云”平臺為外界用戶提供服務(wù),并出租服務(wù)給全世界用戶。用戶獲取IT服務(wù)的方式如同目前電信、電網(wǎng)或煤氣水電一樣,可按照使用量多少付費,而不再通過購買IT產(chǎn)品來付費。
云計算根據(jù)服務(wù)用戶的業(yè)務(wù),可劃分為基礎(chǔ)設(shè)施業(yè)務(wù)服(laaS)、平臺業(yè)務(wù)服務(wù)(PaaS)和軟件業(yè)務(wù)服務(wù)(SaaS)。laaS服務(wù)是指云服務(wù)的供應(yīng)方(如亞馬遜)整合自己的硬件與網(wǎng)絡(luò)設(shè)施,并虛擬化此硬件,為企業(yè)或個人用戶提供虛擬化的硬件服務(wù),用戶使用虛擬化的硬件來部署自己網(wǎng)站,實現(xiàn)自己的業(yè)務(wù)需求。PaaS服務(wù)目標(biāo)是云服務(wù)商(如微軟)在自己網(wǎng)絡(luò)中提供虛擬平臺(通常是操作系統(tǒng))并提供應(yīng)用開發(fā)的API,企業(yè)與個人用戶無需關(guān)注平臺功能具體實現(xiàn)與部署方式,只需關(guān)注如何去使用平臺功能,布署自己業(yè)務(wù)應(yīng)用即可。PaaS可以認為是比laaS高一個層次,提供公用業(yè)務(wù)服務(wù),更容易實現(xiàn)用戶業(yè)務(wù)。SaaS位于PaaS和laaS上層,SaaS服務(wù)目標(biāo)是云服務(wù)商(如360)主要為企業(yè)與個人用戶提供云應(yīng)用相關(guān)軟件,用戶僅僅需要租用這些軟件,以完成自己需要的業(yè)務(wù)即可?;蛘哂脩艨梢詮脑品?wù)商(如淘寶)建構(gòu)自己的應(yīng)用商店,獲取云計算SaaS服務(wù)。
1云計算構(gòu)架研究
云計算層次構(gòu)架可分為基礎(chǔ)laaS層、平臺PaaS層和軟件SaaS層,圖1所示是其三層架構(gòu)。
在laaS層,主要技術(shù)是虛擬化技術(shù),沒有虛擬化(Virtualization)就沒有IaaS層服務(wù)。云服務(wù)商通過對包括基礎(chǔ)設(shè)施、系統(tǒng)和軟件虛擬化后,讓用戶對計算機資源的訪問和管理加以簡化,用戶租用的也是虛擬化以后的軟硬件資源,利用這些資源提供標(biāo)準(zhǔn)的接口獲取相關(guān)服務(wù)。虛擬化技術(shù)包括系統(tǒng)虛擬化,網(wǎng)絡(luò)、內(nèi)存、桌面應(yīng)用、存儲虛擬化??梢蕴摂M化的硬件如計算機的CPU、內(nèi)存、磁盤空間、網(wǎng)絡(luò)連接等基礎(chǔ)設(shè)備,此外還有操作系統(tǒng)等基礎(chǔ)軟件。IaaS服務(wù)是虛擬化技術(shù)發(fā)展的產(chǎn)物,其計費方式通常以CPU、內(nèi)存、存儲空間和網(wǎng)絡(luò)流量等方式收費
PaaS的主要技術(shù)是分布式并行計算和海量存儲技術(shù)。其服務(wù)是在基礎(chǔ)層之上提供中間件,讓用戶能夠快速開發(fā)部署SaaS應(yīng)用,例如,教育培訓(xùn)公司租用云服務(wù)商的云平臺,并部署、實施自己的遠程培訓(xùn)。由于云PaaS平臺上層云應(yīng)用復(fù)雜,SaaS層用戶自身知識與素質(zhì)層次不齊,并發(fā)訪問流量不可預(yù)估,因此云平臺PaaS層構(gòu)架需要進一步細分層次,以適應(yīng)大流量、高響應(yīng)、可伸縮靈活性服務(wù)要求。云平臺PaaS的分層如圖2所示。
SaaS位于PaaS之上,是基于PaaS開發(fā)出來的云應(yīng)用軟件,并可利用IaaS基礎(chǔ)設(shè)施與PaaS平臺,為用戶提供最終軟件服務(wù)。服務(wù)對象是面向終端企業(yè)或個人客戶,故構(gòu)建企業(yè)“云”時,要針對IaaS、PaaS和SaaS特點設(shè)計構(gòu)架。
2“云”服務(wù)構(gòu)架
“云”服務(wù)主要是個人可以將視頻文件、照片直接存在租用的“云”存儲空間里(如百度云里),不管走到哪里都可以隨時瀏覽照片文件、轉(zhuǎn)發(fā)音頻并與網(wǎng)友共享視頻等。可以通過互聯(lián)網(wǎng),利用多媒體語音、電子郵件、微博進行通信。企業(yè)不再需要購買大量機器和軟件,而是租用“云”服務(wù),降低成本,提升自己競爭力。用戶像使用電、水一樣,支付租金按需接入“云”,獲取各種需要的服務(wù)。而且一旦被用戶接受并使用“云”服務(wù),用戶訪問量和數(shù)據(jù)量都會呈現(xiàn)爆發(fā)性的增長,這就對“云”服務(wù)架構(gòu)提出了更高的要求?!霸啤狈?wù)架構(gòu)必須考慮服務(wù)的高可用性,即為企業(yè)與個人用戶提供7X24h不間斷服務(wù),即使發(fā)生軟件或硬件故障時,也能提供必要的服務(wù)。高配置性即按照個性化用戶配置特別需求服務(wù)。高性能指為用戶提供高效的業(yè)務(wù)處理請求。高擴展性即當(dāng)負載增加時,能方便擴展以滿足用戶需求。
3云存儲構(gòu)架
云計算主要面向大用戶、高并發(fā),所以云存儲服務(wù)的數(shù)據(jù)量是海量的,而且隨著用戶量的增加,云存儲的數(shù)據(jù)是積累增長的。因此,構(gòu)建自己云存儲首先要考慮的是日益增長的數(shù)據(jù)、累積數(shù)據(jù)的增加以及用戶對數(shù)據(jù)的訪問效率。靈活高效、安全可靠是云服務(wù)商在構(gòu)建云存儲時最核心的訴求。
3.1“云”文件存儲構(gòu)架
“云”中相當(dāng)?shù)暮A繑?shù)據(jù)是以文件系統(tǒng)來存儲,譬如臨時網(wǎng)頁、靜態(tài)網(wǎng)頁、log和虛擬機磁盤映像。如企業(yè)首頁,一般是靜態(tài)網(wǎng)頁文件,更改很少,有成千上萬用戶訪問,這個首頁文件通常被復(fù)制數(shù)十份分別放到幾十臺主機上,用戶訪問企業(yè)首頁時,可以去不同的機器上去取,從而極大提升訪問效率,這是分布式文件系統(tǒng)在云存儲中的典型應(yīng)用。秉承這一理念,一般分布式文件系統(tǒng)的文件都分為多個備份存儲,適合大規(guī)模并發(fā)讀取操作,其效率明顯高于傳統(tǒng)存儲。目前,在云計算中大量采用分布式文件系統(tǒng)是Google的GFS和Hadoop系統(tǒng)。無論是GFS還是Hadoop,雖然具體實現(xiàn)技術(shù)不同,但就總體構(gòu)架來看是相同的,圖3所示為GFS與Hadoop兩類分布式文件的存儲結(jié)構(gòu)圖。
在具體的存儲層,數(shù)據(jù)被分成一個一個塊,Meta-data是描述具體數(shù)據(jù)塊的定位信息,包含了備份數(shù)據(jù)塊信息。這有點像文件系統(tǒng)的目錄節(jié)點文件對文件塊描述,此處Meta-data是數(shù)據(jù)存儲的目錄結(jié)構(gòu),以數(shù)據(jù)塊為對象進行操作。數(shù)據(jù)塊
是數(shù)據(jù)存儲真實場所,通常硬盤被分成許許多多的塊,Metadata對自體存儲的信息定位。它分布式的塊設(shè)備層,提供塊設(shè)備驅(qū)動。
在存儲層之上是數(shù)據(jù)處理層,主要目標(biāo)是將塊存儲數(shù)據(jù)組合成用戶需要的文件或?qū)ο?,?shù)據(jù)處理層通常用MapReduce完成分布式數(shù)據(jù)處理,大大提升了對大量對象與大文件數(shù)據(jù)的訪問效率。
數(shù)據(jù)存儲通常有3種不同接口方式來實施。首先是較低層對象存儲接口,用于程序?qū)ο笾苯哟鎯?。其次是NoSQLDB,提供數(shù)據(jù)庫接口(通常都是NoSQL數(shù)據(jù)庫來實施存儲的,如Google的Bigtable、Hadoop的HBASE)。最后是文件存儲接口,云存儲服務(wù)中大量采用文件來存儲數(shù)據(jù),很多時候用戶都是以文件方式訪問數(shù)據(jù)。網(wǎng)站上文件應(yīng)用更普遍,分布式系統(tǒng)存儲常常通過讀寫分離、同步寫入來保障最終數(shù)據(jù)一致性。
3.2云數(shù)據(jù)庫存儲架構(gòu)
云數(shù)據(jù)庫存儲采用的是分布式數(shù)據(jù)庫存儲。云存儲海量數(shù)據(jù)時,單個數(shù)據(jù)庫甚至數(shù)據(jù)庫集群容量也不夠。常見解決方法是進行分割,如按用戶ID把海量數(shù)據(jù)分割成若干塊,每塊存儲到不同的獨立數(shù)據(jù)庫里,數(shù)據(jù)采用分布式存儲。但分布式存儲系統(tǒng)也有缺限,如分布式系統(tǒng)不可能同時滿足一致性、可用性、分區(qū)容錯性,最多只能同時滿足兩個,這樣系統(tǒng)在進行分布式處理時會大大增加系統(tǒng)處理的復(fù)雜程度,而實際應(yīng)用中數(shù)據(jù)存儲是需要同時滿足一致性、可用性和分區(qū)容錯性的。分布式存儲中采用數(shù)據(jù)分割的做法大大降低了join操作的效率,也增加系統(tǒng)處理的復(fù)雜度。由于分布式存儲的不成熟,世界知名大企業(yè)針對海量數(shù)據(jù)分布式存儲開發(fā)了許多NoSQL數(shù)據(jù)庫,如Google的Bigtable、耶魯大學(xué)的HadoopDB、亞馬遜的SimpleDB、DynamoDB等。而NoSQL成為了云計算的主流數(shù)據(jù)庫,表1所列是NoSQL數(shù)據(jù)庫與常用的關(guān)系數(shù)據(jù)庫的比較。
與關(guān)系數(shù)據(jù)庫存儲及文件存儲相比,分布式存儲引入了NoSQL數(shù)據(jù)庫和對象存儲。分布式存儲優(yōu)勢明顯,支持大數(shù)據(jù)并發(fā)。對于云中海量數(shù)據(jù)的存儲要進行具體分析,確定最終以文件、對象還是數(shù)據(jù)庫方式來存儲。通常情況下,音視頻文檔及網(wǎng)頁數(shù)據(jù)用文件形式存儲,而格式化數(shù)據(jù)適合以對象或數(shù)據(jù)庫形式保存,對對象實例較多且需要查詢的,大多使用數(shù)據(jù)庫方式存儲。一般情況下數(shù)據(jù)都是動態(tài)分布到所有節(jié)點存儲,由于數(shù)據(jù)是隨機存儲的,因此數(shù)據(jù)存儲在不同的區(qū)域,這樣讀取寫入時花費的時間較多,故數(shù)據(jù)讀寫效率都不高。分布式存儲提供數(shù)據(jù)域,存儲時可以將數(shù)據(jù)統(tǒng)一到同一區(qū)域,分布式數(shù)據(jù)庫可以將硬盤等分割成不同物理區(qū)域(同一區(qū)域),從而大大提升數(shù)據(jù)的訪問效率。
同傳統(tǒng)數(shù)據(jù)庫Schema設(shè)計不同,NoSQL設(shè)計是對象模型設(shè)計。應(yīng)用程序需要設(shè)計自己對象模型樹并針對對象實現(xiàn)流化,就是以數(shù)據(jù)塊方式存儲數(shù)據(jù)對象。通常一個對象就是傳統(tǒng)數(shù)據(jù)庫的一個行,對象屬性可以認為是數(shù)據(jù)庫的列,而傳統(tǒng)數(shù)據(jù)庫中列是需要預(yù)先定義且不可改變的。與傳統(tǒng)數(shù)據(jù)庫不同,每個NoSQL對象的屬性可以動態(tài)改變,NoSQL數(shù)據(jù)庫支持每一行數(shù)據(jù)自定義自己的屬性。完全按照程序邏輯設(shè)計自己數(shù)據(jù)對象,來確定數(shù)據(jù)圖。NoSQL數(shù)據(jù)庫支持?jǐn)?shù)據(jù)圖關(guān)系,在獲取對象時容易獲取到相關(guān)對象,從而減少查找,大大提升效率。NoSQL數(shù)據(jù)庫面向“云”服務(wù)的海量數(shù)據(jù)存儲。在構(gòu)架“云”服務(wù)時,要根據(jù)企業(yè)連接的用戶并發(fā)數(shù)及用戶需求區(qū)別對待不同場景,結(jié)合企業(yè)應(yīng)用側(cè)重點,選擇最優(yōu)的存儲方案。
4云架構(gòu)的質(zhì)量保證
在云計算的laaS、PaaS、SaaS層應(yīng)用服務(wù)中,SaaS層提供云計算最多的服務(wù),SaaS層軟件服務(wù)面向全球用戶,不同企業(yè)或個人用戶之間的數(shù)據(jù)要進行隔離,故SaaS質(zhì)量訴求提出更高的要求。SaaS軟件服務(wù)一旦開始,軟件服務(wù)絕不能中斷,系統(tǒng)就要不中斷地運行。同時SaaS軟件系統(tǒng)還必需不定期升級、更新,以滿足用戶新的應(yīng)用需求。
云服務(wù)商提供的SaaS軟件除了要滿足用戶功能性、界面易用性、可用性、可靠性和安全性等要求以外,還要具有可擴充性、移植性,還要降低軟件系統(tǒng)的復(fù)雜性,使系統(tǒng)更容易維護。SaaS層質(zhì)量保證可以從以下幾方面來考慮。
4.1可用性
SaaS軟件要具有高可用性,也就是要保障7X24h不中斷地運行。網(wǎng)上銀行系統(tǒng)質(zhì)量要求是大于99.999%可用性的客戶需求。系統(tǒng)根據(jù)不同的時段定義不同的可用性,例如在工作日早上6點到午夜11點期間用戶訪問量較多,系統(tǒng)的有效性至少要達到99.995%以上,而在午夜11點到第二天早上6點,并發(fā)用戶量較少,系統(tǒng)的有效性達到99.95%”以上即可。在保證軟件可用性同時也要盡可能地提高軟件的可靠性。
4.2安全性
由于互聯(lián)網(wǎng)上用戶的行為難以規(guī)范和控制,需要對系統(tǒng)和數(shù)據(jù)設(shè)定合理的、可靠的訪問權(quán)限,防止非法用戶闖入和黑客的攻擊,避免數(shù)據(jù)泄密和系統(tǒng)癱瘓。通常用數(shù)據(jù)加密、隔離、存儲、備份和恢復(fù)等保障SaaS系統(tǒng)的安全性。對用戶登錄、口令保護、身份驗證等所有操作要進行全程跟蹤記錄。要保證軟件系統(tǒng)安全性、可靠性與其性能、適用性之間的矛盾統(tǒng)一。
4.3可擴充性
軟件必須保證可擴充性,可擴充性指將來功能增加、系統(tǒng)擴充的難易程度或能力,以適應(yīng)不斷增長的用戶需求。軟件開發(fā)要考慮模塊結(jié)構(gòu)簡單、模塊間耦合性低、多層分布體系架構(gòu)等。
4.4可維護性
可維護性指運行環(huán)境改變或軟件發(fā)生錯誤時,軟件進行修改所付出工作量的難易程度??删S護性體現(xiàn)軟件開發(fā)者理解軟件、更改軟件和測試軟件水平。對于周期性更改的或快速開發(fā)的軟件產(chǎn)品需要更高的可維護性。
5企業(yè)構(gòu)建“云”應(yīng)用所面臨的挑戰(zhàn)
5.1企業(yè)云架構(gòu)的服務(wù)要求
企業(yè)構(gòu)建“云”服務(wù)的成功關(guān)鍵是云服務(wù)軟件要支持大用戶與高并發(fā),如騰訊、360、百度等成功的“云”服務(wù)商,其用戶數(shù)量是以億為單位計算的。因此,大用戶、高并發(fā)是上述“云”服務(wù)商在開發(fā)并提供SaaS服務(wù)時首要考慮的問題。由于云服務(wù)面向全球用戶,中斷服務(wù)的影響往往是無法估量的,因此企業(yè)構(gòu)建的云服務(wù)系統(tǒng)應(yīng)達到99.99%以上的可靠性與穩(wěn)定性。目前免費互聯(lián)網(wǎng)網(wǎng)站的穩(wěn)定性一般低于99.9%,如果對于B2B的收費用戶,則必須提供99.99%以上穩(wěn)定性才行。
企業(yè)構(gòu)架“云”服務(wù)面向數(shù)以萬計的用戶,對系統(tǒng)可維護性與可靠度均要求極高,比如維護一次需中斷服務(wù)1mm,一個月維護4次,系統(tǒng)保障運行一周不出問題,系統(tǒng)能達到99.99%可靠性。如維護一次需要中斷服務(wù)20mm,系統(tǒng)保障正常運行5個月以上才允許維護一次,在此情況下要保障系統(tǒng)99.99%的可靠性,可以想象系統(tǒng)實現(xiàn)難度有多大。
5.2云架構(gòu)系統(tǒng)的維護周期
企業(yè)在構(gòu)建云系統(tǒng)構(gòu)架時,要合理設(shè)計系統(tǒng)維護周期。需要考慮多個構(gòu)架因素:各個服務(wù)器維護流程,每一臺服務(wù)器的維護周期,如何保障最短或不中斷服務(wù)。通常情況下,UNIX/LINUX服務(wù)器需要在3個月到6個月重新啟動一次,企業(yè)在構(gòu)建云系統(tǒng)時要考慮服務(wù)重新啟動時間,以保障系統(tǒng)服務(wù)可靠和安全。要明確維護周期與單次維護服務(wù)中斷時間,根據(jù)維護要求設(shè)計維護系統(tǒng),減少人為因素導(dǎo)致系統(tǒng)服務(wù)中斷,保障系統(tǒng)可靠性并降低運維成本。
5.3云架構(gòu)系統(tǒng)的維護與服務(wù)中斷
企業(yè)構(gòu)建“云”是保證云不中斷服務(wù),一般情況下是采用備份來實現(xiàn)。當(dāng)系統(tǒng)升級或維護時,先將系統(tǒng)切換到備份系統(tǒng),然后對當(dāng)前系統(tǒng)進行維護或是升級,此時服務(wù)中斷時間就降低到切換時間(通常為30s左右),從而提升了系統(tǒng)可靠度,這是“云”服務(wù)商常用的維護模式。企業(yè)在構(gòu)架“云”時要盡可能地減短系統(tǒng)切換時間,減少中斷服務(wù)的影響。必要時可以采用避免中斷的服務(wù)維護。通常企業(yè)構(gòu)建的云服務(wù)中WEB服務(wù)器是集群,負載均衡器LVS采用HA。進行中斷維護時首先對WEB服務(wù)器進行維護,維護時WEB集群系統(tǒng)不會中斷,服務(wù)能力會有所下降,然后對LVS服務(wù)器進行維護。先對備機進行維護,確保備機能夠承擔(dān)服務(wù),然后切換服務(wù)到備機,再對主機進行維護,保障系統(tǒng)不中斷情況下進行了維護,這些都要在企業(yè)構(gòu)架“云”時精心設(shè)計。
5.4云架構(gòu)系統(tǒng)的可配置,性與系統(tǒng)升級
“云”服務(wù)系統(tǒng)配置復(fù)雜,升級與更改配置都是不可避免的事情,企業(yè)在構(gòu)架“云”時盡量保障系統(tǒng)可配置與升級的需求,提升系統(tǒng)可維護性。應(yīng)由系統(tǒng)管理員統(tǒng)一管理系統(tǒng)級配置與升級。對于用戶與站點配置,在云系統(tǒng)運維服務(wù)上要保證查看方便性,更改與恢復(fù)簡單性,降低支持與服務(wù)成本。
5.5云架構(gòu)系統(tǒng)的監(jiān)控能力
對于“云”服務(wù)運營維護來講,等到系統(tǒng)出錯,服務(wù)中斷時才想到維護,必然導(dǎo)致客戶不滿,故企業(yè)在構(gòu)架云時一定要設(shè)計系統(tǒng)監(jiān)控系統(tǒng)。云監(jiān)控應(yīng)該是覆蓋所有云應(yīng)用服務(wù)的軟硬件資源??梢允褂肧NMP監(jiān)控基本網(wǎng)絡(luò)參數(shù)(流量、丟包、抖動等),也可用SNMP對路由、交換、服務(wù)器等物理設(shè)備運行情況及網(wǎng)絡(luò)狀況、拓撲變化進行監(jiān)控。既可以用WebNMS對服務(wù)器硬件如CPU、內(nèi)存、硬盤等情況監(jiān)控并提供實時數(shù)據(jù)報告,也可以對網(wǎng)絡(luò)、存儲、操作系統(tǒng)、數(shù)據(jù)庫、第三方軟件等監(jiān)控和用戶數(shù)據(jù)異常的業(yè)務(wù)流量監(jiān)控,保證云服務(wù)安全運行。
6結(jié)語
云計算作為近些年IT行業(yè)熱點話題,已從概念走入每個人的生活,而如何構(gòu)建企業(yè)云,不僅是考慮技術(shù)和管理因素,它更是一項復(fù)雜的系統(tǒng)工程。主流的云計算應(yīng)用也面臨很多挑戰(zhàn),各企業(yè)在構(gòu)建云時面臨的困境也不相同,標(biāo)準(zhǔn)也不統(tǒng)一,但云架構(gòu)的思想與技術(shù)是相通的。通過分析“云”并構(gòu)架企業(yè)云服務(wù)平臺,轉(zhuǎn)變售銷軟件產(chǎn)品為目標(biāo)的贏利模式為以服務(wù)獲取長期利益的模式,必將成為企業(yè)未來發(fā)展的終極目標(biāo)。
20211116_619285ceb31db__云計算架構(gòu)與企業(yè)