摘 要 分布式計算以其無比快捷的處理速度使其在世界迅速流行開來,而java也因其對于分布式計算的友好性使得越來越多的人開始注重基于java的分布式計算。可以預見,基于java的分布式計算系統會越來越普遍,本文即是討論利用java研究分布式計算的相關技術。
【關鍵詞】分布式 java RMI
1 分布式計算
1.1 分布式計算系統
分布式計算,顧名思義,即將原本需要極其巨大計算能力的問題分解為眾多的小問題,并且將這些問題分配給一些計算機進行處理,最終將各個計算機得出的計算結果進行統計即可得出原本問題的答案。
1.2 分布式計算應用程序的特點
分布式最為顯著的特點之一就是其可以進行稀有資源的共享,及其可以在兩個或兩個以上的軟件中進行信息共享,并且這些軟件不僅可以在一臺電腦上運行,更可以在多臺電腦上運行。因此我們可以根據計算機的計算能力平衡的分配每臺計算機的任務,將程序放在最為適合運行運行該程序的計算機上,使得計算速度達到最快。由于這種特點,目前世界甚至已經存在一些處理能力可以超過巨型計算機的分布式計算系統。
1.3 分布式計算面臨的問題
正所謂有得必有失,無數子電腦的幫助計算大大加速了分布式計算的運行速度,但缺乏足夠的計算機進行計算成為了分布式計算一個不小的問題。
隨著科技的發展,計算機也開始慢慢普及開來,越來越多的家庭電腦出于閑置狀態,互聯網雖然使得網絡分布式計算的實現成為了可能。一些研究所開發出了用于分布式計算的服務端和客戶端。服務端將可以分解的復雜問題分解為無數小塊,通過互聯網將問題發送到志愿提供計算機部分計算能力的計算機中,并統合得到最終答案。但隨之而來的又有了一部分問題,志愿者需要在研究所等處下載計算用的程序,并且允許該程序運行在本電腦上,會因此帶來一些隱私數據泄露的隱患,而且計算程序在平時雖然不會影響用戶使用電腦,但當計算程序全負荷運行時,仍然會對一些性能不是很優秀的電腦造成影響,甚至影響用戶的計算機壽命。此外還有防止志愿者電腦突然事故等原因,研究所還需要尋找一部分多余的電腦進行保證計算的運行。
2 Java技術
2.1 Java在分布式計算上的優勢與不足
Java作為當今最為流行的編程語言,其本就是應網絡而生的,更因為其提供了眾多的類與方法,其對網絡分布式計算有著天然的友好性。其不足之處也很是明顯,由于java開發分布式大多采用RMI,而RMI又有著其局限性,因為它只提供著java虛擬機之間的相互聯系,它不能被其他語言所編寫出來的對象或應用所使用。
2.2 Java多線程編程
多線程可以允許程序在執行中發出多個并發的指令流,并且這些指令流是亂序執行的,而我們可以輕易的通過類java.lang.Thread在java中實現多線程
2.3 Java類裝載器
Java類加載器是負責動態加載java類至java的虛擬機中的,正是因為java類加載器,java程序在運行時系統不需要知道文件和文件系統。
2.4 Java RMI
前言已經提及了java對于分布式計算有著天然的友好性,其主要原因就是因為RMI。RMI中文意思為遠程方法調用,其為我們提供了很方便的使java程序調用其他計算機上的java的方法,即只需經過一些初始化過程,遠程方法的調用就可以和本地方法的調用一樣,因此其為分布式網絡的應用提供了比較完善的框架。
在RMI中,我們需要先建立一個服務器和一個或多個客戶端。其中服務器必須在被客戶端訪問前初始化完畢,做好被遠程訪問的準備,而客戶端則需要尋找到服務器并激活,然后使用服務器對RMI連接初始化。
3 用Java對網絡分布式計算相關技術的研究
3.1 服務器與客戶端的建立
首先我們需要先建立一個遠程接口。在建立接口之前我們需要知道,只有在網絡通信的情況下我們才可以進行遠程方法的調用,但由于網絡通信的不穩定性即網絡出現異常或者有一方斷開了連接,遠程方法的調用就會失敗,因此我們需要在接口中的所有的的方法中調用java.rmi.remoteexception異常,這樣在遠程方法調用時當網絡出現異常,RMI會指出remoteexception異常,當客戶端獲得到這樣的異常時就會做出相應的處理。此外,遠程對象必須在遠程的接口中申明了被用戶程序遠程訪問。
其次我們要實現遠程接口。想要實現遠程接口,我們需要使用java.rmi.sever.UnicastRemoteObject類,因為在該類中我們可以實現RMI中的關于服務器和客戶端的遠程對象、方法以及相關參數序列化的協議交流功能。
然后我們需要創建服務器。先建立一個遠程對象實例,然后在rmiregistry注冊表中注冊這一個遠程對象實例將其與一個名字綁定,注冊表的相關功能則由jdk的安裝目錄下的rmiregistry.exe程序完成,該程序主要是為其提供命名服務。
最終我們需要在建立一個客戶端。在客戶端的程序中我們需要先獲得遠程對象的存根對象,這些存根是由rmic生成的,我們可以通過這些存根來調用方法。
3.2 負載平衡的研究
負載平衡的意思是對系統的負載情況進行動態的調整,以此來盡力的減少系統中各個站點的負載不平衡的現象,從而提高系統的工作速度。因此負載平衡問題是分布式計算系統的核心問題之一,優秀的負載平衡方法可以使人們充分的利用分布式計算的能力。
負載平衡主要有兩種算法,服務器算法:當一個站點超載時期會嘗試將任務發給其他的輕站點,并且主要選擇新任務作為將要發送的任務。客戶端算法:當該站點的任務隊列的長度小于閥值的時候,該站點就會嘗試從中載站點接受一個任務,這時所有站點上的任務都有可能會作為其接受的對象。
參考文獻
[1]謝進軍.Java多線程技術在考試系統中的應用[J].電子制作,2013(15):76-76.
[2]謝聰鈺.Java多線程編程技術的研究[J].城市建設理論研究(電子版),2013(23).
作者簡介
李艷花(1981-),云南省昆明市人。大學本科學歷。現為云南工程職業學院計算機科學與技術專業講師。研究方向為計算機軟件應用、計算機教學研究。
作者單位
云南工程職業學院 云南省安寧市 650300