周凱 李弘 褚寧琳



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