摘 要:隨著網(wǎng)格技術(shù)的深入發(fā)展和普及應(yīng)用,企業(yè)對(duì)應(yīng)用程序設(shè)計(jì)提出了更高要求,應(yīng)用程序的編程日益復(fù)雜。但是,基于網(wǎng)格技術(shù)的應(yīng)用程序編寫必須根據(jù)網(wǎng)格語(yǔ)義實(shí)現(xiàn),應(yīng)用程序需要能夠同時(shí)提供多個(gè)編程接口的編程模型。由于網(wǎng)格接口數(shù)量會(huì)越來越多,編程代碼規(guī)模會(huì)更加龐大和復(fù)雜,本文利用Java語(yǔ)言的跨平臺(tái)特征,提出了分布式線程編程模型的構(gòu)建方案,對(duì)促進(jìn)網(wǎng)格應(yīng)用程序的開發(fā)和設(shè)計(jì)具有實(shí)際意義。
關(guān)鍵詞:網(wǎng)格計(jì)算;Java語(yǔ)言;編程模型
中圖分類號(hào):TP311.10
一般情況下,基于網(wǎng)格運(yùn)行的應(yīng)用程序是實(shí)時(shí)被進(jìn)程監(jiān)控的,不同的應(yīng)用程序在屬于自己的數(shù)據(jù)空間內(nèi)運(yùn)行,沒有對(duì)時(shí)間同步、共享訪問和全局?jǐn)?shù)據(jù)的需求。由此,能夠從網(wǎng)格獲益的兩類應(yīng)用程序是:首先,提出一個(gè)基于邏輯數(shù)據(jù)運(yùn)行的多線程應(yīng)用程序,可以實(shí)現(xiàn)獨(dú)立執(zhí)行、并行執(zhí)行功能線程;其次,執(zhí)行該功能線程的應(yīng)用程序必須擁有相同的邏輯,這些邏輯處于不同的獨(dú)立數(shù)據(jù)空間。目前,如何能夠基于網(wǎng)格實(shí)現(xiàn)編程是網(wǎng)格技術(shù)發(fā)展亟待解決的問題,如果沒有編程環(huán)境和工具的有效支持,網(wǎng)格編程必然面臨重大困難,程序設(shè)計(jì)的過程中也容易出現(xiàn)各種錯(cuò)誤。因此,必須創(chuàng)建一個(gè)基于網(wǎng)格的,能夠輕松實(shí)現(xiàn)升級(jí)擴(kuò)展的編程模型,觸發(fā)應(yīng)用程序范例中的線程作業(yè),此時(shí),文件傳輸任務(wù)、資源定位任務(wù)等將會(huì)被隔離在應(yīng)用邏輯之外。
1 網(wǎng)格技術(shù)的內(nèi)涵
基于網(wǎng)格的資源屬于分布式異構(gòu)資源,不同的資源分布在不同的地理位置。網(wǎng)格是將這些不同地理位置資源進(jìn)行集合的分布式整體資源,網(wǎng)格中除了資源不再存在其他任何東西。網(wǎng)格資源包括集群資源、計(jì)算機(jī)資源、分布式系統(tǒng)資源、存儲(chǔ)設(shè)備資源、數(shù)據(jù)庫(kù)資源、互聯(lián)網(wǎng)資源、儀器設(shè)備資源、軟件程序資源等各種實(shí)體資源。對(duì)網(wǎng)格資源進(jìn)行定義,主要包括以下六類資源:計(jì)算資源、存儲(chǔ)資源、設(shè)備資源、軟件資源、網(wǎng)絡(luò)資源和人力資源,人力資源屬于網(wǎng)格資源中最具主觀能動(dòng)性的特殊類型資源,由此可見,網(wǎng)格是一個(gè)集成了各種資源的計(jì)算資源池。
2 網(wǎng)格編程技術(shù)
網(wǎng)格編程的主流方法是利用商品化技術(shù)將各種技術(shù)資源進(jìn)行統(tǒng)一集成,對(duì)網(wǎng)格編程給予支持。目前,商品化技術(shù)在編程計(jì)算領(lǐng)域得到了良好的實(shí)踐應(yīng)用,并取得了一定成果。因此,網(wǎng)格編程計(jì)算通常情況下采用的也是該種方法。商品化技術(shù)包括Java、VRML、Web等各種網(wǎng)絡(luò)技術(shù)。
網(wǎng)格編程的最上層構(gòu)成一個(gè)結(jié),由于其功能相對(duì)簡(jiǎn)單明晰,通常情況下被當(dāng)作客戶前段,其功能包括圖形界面顯示、相關(guān)工具等。中間一層也構(gòu)成了一個(gè)結(jié),主要負(fù)責(zé)對(duì)功能復(fù)雜的后端和功能簡(jiǎn)單的客戶前端進(jìn)行協(xié)調(diào),包括高級(jí)Agent等,以此來實(shí)現(xiàn)平衡負(fù)載、算法變換等。最下面一層的結(jié)通常情況下被稱作后端服務(wù),其功能結(jié)構(gòu)比較復(fù)雜,負(fù)責(zé)對(duì)客戶端提出的各種請(qǐng)求及時(shí)做出響應(yīng)和支持。
利用商品化技術(shù)構(gòu)建的網(wǎng)格編程環(huán)境正在實(shí)踐應(yīng)用和探索階段,其應(yīng)用效果與商品化技術(shù)的發(fā)展程度密切相關(guān)。
3 Java程序設(shè)計(jì)語(yǔ)言
Java語(yǔ)言的應(yīng)運(yùn)而生從根本上解決了網(wǎng)絡(luò)異質(zhì)、代碼通用和網(wǎng)絡(luò)安全性能等多方面問題。第一,Java語(yǔ)言與平臺(tái)沒有任何關(guān)系,其采用的是可移動(dòng)的代碼技術(shù),基于網(wǎng)絡(luò)能夠?qū)崿F(xiàn)各種格式的數(shù)據(jù)交換和共享,更能實(shí)現(xiàn)應(yīng)用程序的交換;第二,Java語(yǔ)言能夠?qū)崿F(xiàn)與HTML格式的無縫對(duì)接,將靜態(tài)文本文件實(shí)時(shí)轉(zhuǎn)換成為可以運(yùn)行的應(yīng)用程序,提高了文本的操作性和互動(dòng)性;第三,Java語(yǔ)言具有良好的安全性能,健全了C/C++語(yǔ)言編程中的安全問題,擁有更多的安全保障機(jī)制。
Java語(yǔ)言對(duì)軟件系統(tǒng)開發(fā)設(shè)計(jì)和代碼編程產(chǎn)生的影響主要包括:(1)軟件需求分析:利用可視化功能動(dòng)態(tài)描述不同用戶提出的個(gè)性化需求,為軟件開發(fā)和設(shè)計(jì)人員提供最為直觀的可視需求。雖然不同客戶提出的軟件功能需求不盡相同,但不會(huì)受到時(shí)間、地域和行業(yè)的任何影響,可以利用Java語(yǔ)言直接進(jìn)行描述。(2)軟件開發(fā)方法:由于Java語(yǔ)言具有十分獨(dú)特的面向?qū)ο筇卣?,因此,軟件開發(fā)設(shè)計(jì)人員可以利用面向?qū)ο蟮睦砟顚?shí)現(xiàn)軟件系統(tǒng)的開發(fā)和設(shè)計(jì),而且,面向?qū)ο罄砟钸€可以保證完全符合軟件開發(fā)的各項(xiàng)規(guī)范。(3)軟件動(dòng)畫效果:一般情況下,采用Java語(yǔ)言實(shí)現(xiàn)的動(dòng)畫效果,遠(yuǎn)遠(yuǎn)比利用GUI圖形用戶接口技術(shù)實(shí)現(xiàn)的動(dòng)畫效果更加逼真和形象,同時(shí),互聯(lián)網(wǎng)海量的動(dòng)畫資源空間可以實(shí)時(shí)共享全部的動(dòng)態(tài)畫面資源。(4)軟件成型產(chǎn)品:Java語(yǔ)言具有可視化、操作性強(qiáng)、交互性好等明顯優(yōu)勢(shì),能夠?qū)崿F(xiàn)動(dòng)畫、動(dòng)作界面的實(shí)時(shí)停止和繼續(xù),這是電影產(chǎn)品和電視產(chǎn)品的實(shí)際播放過程中難以真正實(shí)現(xiàn)的。
4 分布式線程編程模型構(gòu)建
4.1 工作原理。在 上中的所有節(jié)點(diǎn)運(yùn)行一個(gè)或多個(gè)叫做 的代理進(jìn)程,他們負(fù)責(zé) 的執(zhí)行和管理。 在 系統(tǒng)上的其中一個(gè)節(jié)點(diǎn)中運(yùn)行,并且所有的 代理進(jìn)程都用 注冊(cè), 負(fù)責(zé)分配那些需要分布式并行應(yīng)用的代理進(jìn)程。
軟件系統(tǒng)的開發(fā)步驟如下:(1)創(chuàng)建一個(gè)分布式線程,可以通過擴(kuò)展 類或 類來實(shí)現(xiàn);(2)在分布式線程的 里寫入并行計(jì)算代碼;(3)創(chuàng)建一個(gè)可用的 實(shí)例,提交 實(shí)例到 實(shí)例。目前只有 可用;(4) 將從 中請(qǐng)求獲得代理進(jìn)程,它克隆 且分配到代理進(jìn)程。 在每一個(gè)代理進(jìn)程中運(yùn)行,并且使用基于對(duì)象的消息傳遞。
4.2 編程模型。這個(gè)部分將在網(wǎng)格上為 分布式線程確立編程模型。
(1)實(shí)施一個(gè) 。計(jì)算邏輯必須被克隆進(jìn)多實(shí)例和在 類中實(shí)現(xiàn)分布。下面詳細(xì)描述 編程模型。
(2)實(shí)例化 。 的基本角色繼續(xù)同在 中一樣,只是有一些附加的責(zé)任。 的基本角色指的是 編程模型。
4.3 DPPEJ操作模型
操作模型中集合了 利用網(wǎng)格技術(shù)來分配遠(yuǎn)程網(wǎng)絡(luò)節(jié)點(diǎn)線程,同時(shí)負(fù)責(zé)啟動(dòng)線程。如果啟動(dòng)成功,則由分布式線程利用 來傳遞和共享信息。 負(fù)責(zé)提供開放式的網(wǎng)格協(xié)議,以便實(shí)現(xiàn)信息的傳遞。 操作模型如下:(1) 節(jié)點(diǎn)標(biāo)識(shí)。在網(wǎng)格節(jié)點(diǎn)處進(jìn)行系統(tǒng)登錄,則可以獲取 服務(wù)。 指的是網(wǎng)格目錄服務(wù),屬于網(wǎng)格形成的中間件結(jié)構(gòu)。只有執(zhí)行 節(jié)點(diǎn)標(biāo)識(shí)的特定功能,才能匹配到合適的網(wǎng)格節(jié)點(diǎn)。(2)在遠(yuǎn)程網(wǎng)格節(jié)點(diǎn)處建立 操作模型,同時(shí)啟動(dòng)代理業(yè)務(wù)。在 操作模型運(yùn)行中,進(jìn)程文件全部被傳送到已經(jīng)完成標(biāo)識(shí)的網(wǎng)格節(jié)點(diǎn)中。(3)從網(wǎng)格客戶節(jié)點(diǎn)到遠(yuǎn)程網(wǎng)格節(jié)點(diǎn)的信息傳輸過程中,單獨(dú)執(zhí)行 節(jié)點(diǎn)標(biāo)識(shí),同時(shí)在路徑中創(chuàng)建節(jié)點(diǎn)標(biāo)識(shí)。利用 編程模型來實(shí)現(xiàn)庫(kù)文件的傳輸,此時(shí)對(duì)于 編程模型來說屬于透明結(jié)構(gòu)。(4)在網(wǎng)格客戶節(jié)點(diǎn)中將數(shù)據(jù)文件輸入,同時(shí)執(zhí)行 節(jié)點(diǎn)標(biāo)識(shí)。客戶應(yīng)用程序利用 編程模型來實(shí)現(xiàn)庫(kù)文件的傳輸,此時(shí)對(duì)于 編程模型來說屬于透明結(jié)構(gòu)。(5) 在遠(yuǎn)程網(wǎng)格節(jié)點(diǎn)中負(fù)責(zé)回收輸出文件,此時(shí),客戶應(yīng)用程序利用 編程模型來實(shí)現(xiàn)庫(kù)文件的傳輸,對(duì)于 編程模型來說屬于透明結(jié)構(gòu)。(6)在遠(yuǎn)程網(wǎng)格節(jié)點(diǎn)中,連續(xù)更新 狀態(tài),此時(shí),處于異步更新狀態(tài)的 編程模型已經(jīng)被使用。每個(gè) 編程模型的客戶應(yīng)用程序均可以登錄到 中,負(fù)責(zé)獲取遠(yuǎn)程網(wǎng)格節(jié)點(diǎn)中的 節(jié)點(diǎn)標(biāo)識(shí),以實(shí)現(xiàn)狀態(tài)的連續(xù)異步更新。
參考文獻(xiàn):
[1]龍軍.基于Java語(yǔ)言的流式套接字編程探析[J].電腦知識(shí)與技術(shù),2013(10):2339-2340.
[2]朱鵬程,管致錦,衛(wèi)麗華.可逆編程語(yǔ)言R-JAVA及其語(yǔ)言處理系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013(10):3502-3510.
[3]李健周.關(guān)于計(jì)算機(jī)軟件開發(fā)的JAVA編程語(yǔ)言研究[J].信息通信,2013(10):90.
[4]章立,萬歡.基于計(jì)算機(jī)軟件開發(fā)的JAVA編程語(yǔ)言分析[J].硅谷,2013(19):69+80.
[5]程鵬.淺談如何利用java編程實(shí)現(xiàn)網(wǎng)絡(luò)安全通信[J].電子制作,2013(19):77.
作者單位:哈爾濱師范大學(xué),哈爾濱 150027