周凱 李弘 褚寧琳
摘要:當(dāng)前智慧化校園建設(shè)正響應(yīng)時(shí)代的需要處于高速發(fā)展時(shí)期,如何建設(shè)一套高性能、可擴(kuò)展的網(wǎng)絡(luò)教育資源平臺(tái),特別是建設(shè)基于藝術(shù)類學(xué)科以非結(jié)構(gòu)化數(shù)據(jù)為主的云資源平臺(tái)是一個(gè)迫切需要探討研究的問題。文章從實(shí)際出發(fā),針對當(dāng)前資源平臺(tái)建設(shè)技術(shù)的突出問題和藝術(shù)類資源特點(diǎn),提出基于云計(jì)算的分布式架構(gòu)的資源云平臺(tái)建設(shè)方案。建立一套基于云計(jì)算的分布式架構(gòu)、分散存儲(chǔ)、統(tǒng)一管理的系統(tǒng)平臺(tái),以實(shí)現(xiàn)藝術(shù)類資源的共建共享。
關(guān)鍵詞:分布式;資源;云;負(fù)載均衡
分布式系統(tǒng)早在20世紀(jì)七八十年代就已經(jīng)出現(xiàn)。進(jìn)入互聯(lián)網(wǎng)時(shí)代,分布式系統(tǒng)得以高速發(fā)展。如Google,它充分運(yùn)用分布式系統(tǒng)架構(gòu)的設(shè)計(jì)思想及技術(shù),構(gòu)建了一套系統(tǒng)完整的軟件架構(gòu),使其具有可以處理高并發(fā)請求響應(yīng)以及海量數(shù)據(jù)處理等能力。本文基于云計(jì)算平臺(tái)的基礎(chǔ)上,結(jié)合藝術(shù)類資源云平臺(tái)的特點(diǎn),及非結(jié)構(gòu)化數(shù)據(jù)的處理,采用分布式系統(tǒng)架構(gòu)技術(shù),探討一套先進(jìn)的,適用于多種云架構(gòu)形式的藝術(shù)類資源云平臺(tái)部署方案。
1 分布式服務(wù)系統(tǒng)概念
分布式服務(wù)系統(tǒng)就是將系統(tǒng)組件分布在幾臺(tái)獨(dú)立的服務(wù)器上,而后把各服務(wù)器連接成一個(gè)統(tǒng)一的網(wǎng)絡(luò)相互協(xié)作,從而完成整個(gè)系統(tǒng)的功能。
分布式結(jié)構(gòu)在系統(tǒng)速度的處理上有著明顯的優(yōu)勢。各系統(tǒng)功能分別放在不同的服務(wù)器上以并行的方式協(xié)同工作,完成各自的功能。例如:在一臺(tái)服務(wù)器上運(yùn)行兩個(gè)進(jìn)程:A和B,如果A消耗系統(tǒng)資源(CPU或者內(nèi)存)過高,則B只能使用少量的系統(tǒng)資源,這樣會(huì)導(dǎo)致進(jìn)程B的效率低下。如果我們把A拆分到其他服務(wù)器上,那么除去A之外,原硬件服務(wù)器上其余的進(jìn)程就能夠獲得更多的系統(tǒng)資源。通過多線程操作一個(gè)進(jìn)程A,如果將其分為4個(gè)任務(wù),2分鐘時(shí)間完成一個(gè)任務(wù)。非分布式結(jié)構(gòu)系統(tǒng)將要花費(fèi)8分鐘來完成,而采用分布式結(jié)構(gòu)最快則需要2分鐘即可完成。
典型分布式服務(wù)器架構(gòu)由3部分組成:表現(xiàn)層、業(yè)務(wù)層、數(shù)據(jù)層。表現(xiàn)層主要負(fù)責(zé)用戶與業(yè)務(wù)層之間的連接和數(shù)據(jù)的傳遞與處理,在整個(gè)系統(tǒng)中工作相對來說比較簡單。業(yè)務(wù)層是系統(tǒng)核心層。負(fù)責(zé)各功能模塊之間的運(yùn)行通訊及數(shù)據(jù)的處理。數(shù)據(jù)層則主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)。
從上述典型分布式架構(gòu)可以得出,由于各部分所承擔(dān)的任務(wù)不同,對硬件的要求也是有所區(qū)別,所以我們可以根據(jù)每層具體的工作,因地制宜地選擇相應(yīng)的服務(wù)器。如表現(xiàn)層負(fù)責(zé)的工作相對比較簡單,在服務(wù)器的配置上可以根據(jù)實(shí)際情況選擇實(shí)用經(jīng)濟(jì)型的;業(yè)務(wù)層負(fù)責(zé)整個(gè)資源云平臺(tái)的業(yè)務(wù)邏輯與數(shù)據(jù)處理,注重處理的速度、能力與資源的消耗。對服務(wù)器配置選擇上要求很高;數(shù)據(jù)層負(fù)責(zé)數(shù)據(jù)源。在搭建時(shí)要根據(jù)具體情況,充分考慮數(shù)據(jù)量、數(shù)據(jù)查詢檢索的要求及數(shù)據(jù)存儲(chǔ)的速度等因素,選擇相應(yīng)的數(shù)據(jù)庫與服務(wù)器配置。
2 藝術(shù)類資源云平臺(tái)設(shè)計(jì)目標(biāo)
2.1高穩(wěn)定
保證服務(wù)器群組穩(wěn)定高效運(yùn)行,服務(wù)器之間的通信順暢及負(fù)載均衡。盡可能降低服務(wù)器異常崩潰、宕機(jī)的情況,確保資源云平臺(tái)提供的服務(wù)與用戶體驗(yàn)的基本要求。
2.2高效率
高效率體現(xiàn)在工作效率高、系統(tǒng)承載能力強(qiáng)、成本得到有效控制,可根據(jù)實(shí)際服務(wù)器的功能配置相應(yīng)的服務(wù)器以節(jié)約成本,減少帶寬與維護(hù)人員。
2.3可擴(kuò)展
云平臺(tái)建設(shè)應(yīng)充分考慮內(nèi)容及功能模塊的可擴(kuò)展性,使平臺(tái)服務(wù)具有可持續(xù)性;服務(wù)器集群具有周期性更新的擴(kuò)展能力,并能應(yīng)對用戶人數(shù)的增長與運(yùn)營后期用戶在線留存率的保持。
2.4低耦合
充分降低各功能之間的耦合度,將各功能模塊分別在獨(dú)立的服務(wù)器上運(yùn)行,保障各功能運(yùn)行的獨(dú)立性。
2.5安全性
安全是資源云平臺(tái)運(yùn)營中最重要的問題之一。為保障用戶信息安全,需建立嚴(yán)謹(jǐn)科學(xué)的身份驗(yàn)證機(jī)制,使用安全套接協(xié)議層或高度加密協(xié)議反嗅取密碼,是有效的應(yīng)對措施,以解決用戶誤操作、欺騙、重復(fù)登錄、密碼恢復(fù)等安全問題。
3 分布式架構(gòu)的藝術(shù)類資源云平臺(tái)設(shè)計(jì)
藝術(shù)類資源云平臺(tái)設(shè)計(jì)以云計(jì)算技術(shù)為基礎(chǔ),構(gòu)建一套基于B/S架構(gòu)的云平臺(tái)。平臺(tái)主要包含:Web Server、登錄服務(wù)器(Login Server)、網(wǎng)關(guān)(Gateway Server)、業(yè)務(wù)邏輯服務(wù)(Scene Server)、數(shù)據(jù)服務(wù)(DB Server)等。拓?fù)浣Y(jié)構(gòu)如圖l所示。
系統(tǒng)整體架構(gòu)中除業(yè)務(wù)邏輯服務(wù)器采用單線程外,消息層則采用多線程來工作。對于客戶端與登錄服務(wù)器、Gateway之間的連接任務(wù)具有如下特點(diǎn)。
(l)需要大量線程完成的任務(wù)。此類任務(wù)數(shù)量多,單位任務(wù)小,完成時(shí)間短。如:客戶端通過Web服務(wù)器訪問網(wǎng)頁注冊、登錄任務(wù)。
(2)性能要求過高的業(yè)務(wù)應(yīng)用,如:需服務(wù)器迅速響應(yīng)大規(guī)模客戶的突發(fā)性請求現(xiàn)象。
(3)大規(guī)模客戶突發(fā)性請求,會(huì)導(dǎo)致內(nèi)存在短時(shí)間內(nèi)達(dá)到峰值,出現(xiàn)“Out of Memory”錯(cuò)誤??梢岳枚嗑€程技術(shù)來解決處理器單元內(nèi)多個(gè)線程執(zhí)行的問題,它可以顯著地減少處理器單元的閑置時(shí)間,增加處理器單元的吞吐能力[1]。若要進(jìn)一步減少創(chuàng)建線程的數(shù)目,及創(chuàng)建線程與銷毀的時(shí)間,也可以建立封裝了一個(gè)線程多個(gè)連接的線程池框架,示例如下。
class TCPTaskPooI
{
ThreadGroup verifyThreads;//驗(yàn)證線程,可以有多個(gè)
ThreadGroup okayThreads;//處理主線程,多個(gè)
SyncThread* syncThread;//等待同步線程
RecycleThread* recycleThread;//連接回收線程
bool m versionVerified;//是否驗(yàn)證過版本 }
3.1網(wǎng)關(guān)(Gateway)
Gateway服務(wù)器也稱網(wǎng)關(guān)服務(wù)器。按圖1所示,Gateway建立在客戶端與業(yè)務(wù)邏輯服務(wù)器(Scene Server)中間。其任務(wù)在于實(shí)現(xiàn)客戶端與業(yè)務(wù)邏輯服務(wù)器的隔離??蛻舳伺c業(yè)務(wù)邏輯服務(wù)器之間的通信,通過中間層Gateway進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù)包實(shí)現(xiàn)信息交互通信。這樣客戶端與Scene Server由于不直接通信所以并不需要知道業(yè)務(wù)邏輯服務(wù)器內(nèi)部的構(gòu)建如IP、port等。帶來的好處是多方面的:安全上Gateway作為客戶端與業(yè)務(wù)邏輯服務(wù)器之間的中轉(zhuǎn)站,很好地隔離了內(nèi)網(wǎng)與外網(wǎng),使外網(wǎng)不能直接與業(yè)務(wù)邏輯服務(wù)器內(nèi)部作訪問,加強(qiáng)了安全性。作為平臺(tái)的唯一入口,減少了與平臺(tái)服務(wù)器內(nèi)其他服務(wù)之間的多條連接。很大程度上節(jié)約了網(wǎng)絡(luò)資源的消耗。
Gateway負(fù)責(zé)通信的加密、解密、過濾錯(cuò)誤非法包、超時(shí)判斷與通信協(xié)議的邏輯處理。連接在網(wǎng)關(guān)上的客戶端通過Gateway發(fā)送的心跳,獲知客戶端與網(wǎng)關(guān)之間的連接狀態(tài),如果客戶端掉線,網(wǎng)管就會(huì)通知各服務(wù)器做用戶的脫機(jī)、下線處理。
對于高負(fù)載下的通信瓶頸問題,可以采取多網(wǎng)關(guān)技術(shù),同時(shí)部署多個(gè)Gateway來增加通信流量,達(dá)到平衡負(fù)載的作用。即便某個(gè)Gateway出現(xiàn)宕機(jī),它也只影響到所屬Gateway的客戶端,而其他客戶端則不受影響。
Gateway作為客戶端與平臺(tái)各服務(wù)的進(jìn)出口,承擔(dān)著頻繁的消息發(fā)送和接收工作。為提高系統(tǒng)效率,可以采取一種“以空間、換時(shí)間”的做法,采用“池”技術(shù),建立一個(gè)消息對象池?!俺亍钡募夹g(shù)己廣泛應(yīng)用于系統(tǒng)設(shè)計(jì)中,例如內(nèi)存池、數(shù)據(jù)庫連接池?!俺亍钡膬?yōu)勢在于節(jié)省對象重復(fù)創(chuàng)建和初始化時(shí)間,對于頻繁請求和使用的對象,簡化訪問和使用的過程,從而提升系統(tǒng)的性能。首先事先創(chuàng)建好被使用的對象,并按照特定的上下文環(huán)境進(jìn)行初始化,保證客戶端提取后可直接使用,使用完畢后將對象歸還給“池”。當(dāng)系統(tǒng)達(dá)到生命期的臨界值,由“池”統(tǒng)一釋放。這些保存在內(nèi)存中隨時(shí)供客戶端調(diào)取的對象,所占用的內(nèi)存空間與系統(tǒng)效率相比微乎其微。
3.2業(yè)務(wù)邏輯服務(wù)(Scene Server)
業(yè)務(wù)邏輯服務(wù)主要提供具體的業(yè)務(wù)邏輯,如:流媒體播放服務(wù)、會(huì)話交互服務(wù)、軟件下載等。它們共同完成平臺(tái)邏輯的運(yùn)算和大量的信息傳遞、數(shù)據(jù)同步工作。
在做好各子模塊的交互、信息傳遞工作的同時(shí),要重點(diǎn)考慮兩個(gè)問題:一是服務(wù)器的性能消耗問題。這里首先要考慮的是服務(wù)器承載多個(gè)子模塊的信息通信與邏輯處理帶來的性能消耗。二是基于流媒體服務(wù)的并發(fā)問題。前者我們通過把消耗資源過大的非共性的子系統(tǒng)單獨(dú)劃分服務(wù)處理。后者在解決大并發(fā)應(yīng)用設(shè)計(jì)上,可以建設(shè)一套非結(jié)構(gòu)化數(shù)據(jù)中心的負(fù)載均衡,如圖2所示。
搭建主流媒體服務(wù)及若干臺(tái)子流媒體服務(wù)可通過負(fù)載均衡及數(shù)據(jù)分發(fā)技術(shù),由主流媒體服務(wù)器自動(dòng)把上傳資源分發(fā)到相應(yīng)的子流媒體服務(wù)器的存儲(chǔ)空間上。系統(tǒng)依據(jù)流媒體服務(wù)器的網(wǎng)卡流量大小進(jìn)行負(fù)載均衡,通過數(shù)據(jù)中心的調(diào)度服務(wù),判斷由哪一臺(tái)流媒體服務(wù)器響應(yīng)當(dāng)前上層應(yīng)用系統(tǒng)的數(shù)據(jù)應(yīng)用請求,并從對應(yīng)的存儲(chǔ)空間讀取數(shù)據(jù),為上層應(yīng)用系統(tǒng)提供數(shù)據(jù)資源的流媒體播放服務(wù)。由于服務(wù)器的網(wǎng)卡及存儲(chǔ)設(shè)備的磁盤I/O存在局限,所以上述方式會(huì)對服務(wù)器及存儲(chǔ)設(shè)備占用較多。為了能最大化提升單臺(tái)服務(wù)器的服務(wù)能力,并降低整體硬件設(shè)備的投入,可以對服務(wù)器做多網(wǎng)卡綁定,來提升單臺(tái)服務(wù)器的網(wǎng)絡(luò)帶寬。配備高速率硬盤提升磁盤的I/O效率,從而提升單服務(wù)器的流媒體并發(fā)訪問量。具體設(shè)計(jì)如圖3所示。
3.3 Session Server
Session Server主要負(fù)責(zé)Scene與Scene之間的橋接,完成多個(gè)Scene之間的數(shù)據(jù)交互。
當(dāng)用戶過多,Scene Server負(fù)載過高時(shí),分出多組SceneServer可以有效地提高業(yè)務(wù)邏輯的處理能力,Session Server則用于多個(gè)Scene Server之間的數(shù)據(jù)交互。
Scene Server與Session Server服務(wù)器之間的通信使用TCP連接:在Scene Server初始化的過程中,首先建立Session Client實(shí)例,將該實(shí)例連接Session Server,從而實(shí)現(xiàn)Scene Server與Session Server之間的連接。連接的基本策略是將其中一個(gè)Server抽象成服務(wù)器,另一個(gè)Server抽象成客戶端。
Session Server與Scene Server通信時(shí),Session Server層次級(jí)別高于Scene Server,所以抽象Session Server為服務(wù)器,Scene Server為客戶端。Scene Server中建立一個(gè)SessionClient類與Session Server的一個(gè)SessionTask保持長連接。每次建立的通信則為SessionTask與SessionClient之間的通信。示例如下:
bool SessionClient: :connectToSessionServer()
if (!connect()) {
Eagle: :logger->error("連接 Session服務(wù)器
return false;
}
//發(fā)送到SessionServer進(jìn)行注冊;
Cmd: : Session: :t_LoginSessionServer crnd;
cmd.serverID = SceneService::getSingleton().getServerID();
cmd.serverType = SceneService::getSingleton().getServerType();
return sendCmd(&cmd.; sizeof(cmd));}
4 藝術(shù)類數(shù)據(jù)資源建設(shè)
藝術(shù)類數(shù)據(jù)資源具有一定的獨(dú)特性,即主體為非結(jié)構(gòu)化數(shù)據(jù)。所以基于這樣的特殊性,需要秉承數(shù)據(jù)驅(qū)動(dòng)服務(wù)的理念,統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn),集中式、流程化、科學(xué)地處理非結(jié)構(gòu)化與結(jié)構(gòu)化數(shù)據(jù)。
藝術(shù)類資源數(shù)據(jù)類型多樣,所以對每類資源進(jìn)行標(biāo)準(zhǔn)化時(shí),需從多維度定義屬性,從而處理數(shù)據(jù)之間的異構(gòu)化,完成數(shù)據(jù)清洗,對關(guān)聯(lián)數(shù)據(jù)進(jìn)行邏輯封裝。數(shù)據(jù)的管理采取世系技術(shù),對產(chǎn)生的多個(gè)數(shù)據(jù)集及同一數(shù)據(jù)集內(nèi)部的數(shù)據(jù)演化進(jìn)行系統(tǒng)記錄及管理[3]。這種數(shù)據(jù)世系管理技術(shù)可以幫助用戶加深對結(jié)果的理解,為教學(xué)科研的研究者提供整體活動(dòng)的可信度及可重復(fù)性,為大數(shù)據(jù)分析及數(shù)據(jù)挖掘提供系統(tǒng)、準(zhǔn)確的判斷。在出現(xiàn)故障時(shí),結(jié)合容災(zāi)備份機(jī)制,也可以準(zhǔn)確、快速地恢復(fù)。
5結(jié)語
本文從實(shí)際問題出發(fā),經(jīng)過理論研究,利用云計(jì)算技術(shù)、分布式系統(tǒng)架構(gòu)技術(shù)及思想,給出一套系統(tǒng)的分布式架構(gòu)的藝術(shù)類資源云平臺(tái)的建設(shè)方案。本方案有效地提高了整體平臺(tái)的邏輯運(yùn)算處理、負(fù)載均衡的能力,特別是上層應(yīng)用系統(tǒng)對非結(jié)構(gòu)化數(shù)據(jù)資源的流媒體播放、存儲(chǔ)服務(wù)給出了優(yōu)化辦法,實(shí)現(xiàn)高性能、多樣化、可擴(kuò)展的藝術(shù)類資源云平臺(tái)建設(shè)。
[參考文獻(xiàn)]
[1]朱彬若,杜衛(wèi)華,李蕊.電力用戶用電信息采集系統(tǒng)數(shù)據(jù)分析與處理技術(shù)[J]華東電力,2011 (10):1682-1686
[2]王軍.云計(jì)算系統(tǒng)資源調(diào)度及安全性研究[D].武漢:武漢理工大學(xué),2013.
[3]高明,金澈清,王曉玲,等.數(shù)據(jù)世系管理技術(shù)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2010 (3):33