JINI基礎(chǔ).ppt_第1頁
JINI基礎(chǔ).ppt_第2頁
JINI基礎(chǔ).ppt_第3頁
JINI基礎(chǔ).ppt_第4頁
JINI基礎(chǔ).ppt_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1,JINI基礎(chǔ),2,JINI不是什么,Jini不是名字服務(wù)器 前面已談以, JINI并不是一個簡單的名字服務(wù)器。盡管JINI的一些行為,如跟蹤一個群體中的服務(wù),看起來像是名字服務(wù)器,而且JINI使用的JINI查找工具,功能也類似于(不完全相同)名字服務(wù)器,但JINI并不僅僅如此。它是一個用于創(chuàng)建分布式系統(tǒng)的模型,可支持服務(wù)在一個群體中自發(fā)地出現(xiàn)或消失,而且在系統(tǒng)出錯時具有自修復(fù)能力。,3,Jini不是JavaBeans javabeans提供了一種方法,使得軟件構(gòu)件(稱為bean)可以彼此找到,可以使用其他beans提供的服務(wù),相互內(nèi)省等等。但javabeans的設(shè)計核心與JINI完全不同,

2、 beans需要在單地址空間中使用, bean之間使用的通信機制是基于直接方法調(diào)用,而不是遠(yuǎn)程協(xié)議。beans的模型在靈活性和動態(tài)性方面都遠(yuǎn)不如JINI。當(dāng)一個新的bean出現(xiàn)在系統(tǒng)中時,應(yīng)用中已有的bean不能立即感知到它并使用它,系統(tǒng)的設(shè)計者必須明確地把這個bean鏈入應(yīng)用中并建立與其他bean的連接。javabeans主要是用于設(shè)計時而不是運行時,在單地址空間中使用; JINI是用于運行時,跨地址空間工作(這并不是說JINI和javabeans不兼容,相反, JINI可以在很多方面優(yōu)化javabeans,,4,Jini不是企業(yè)JavaBeans 類似地, J i n i也不是企業(yè)J a

3、v a bean(E J B)。從表面上看, E J B具有一些J i n i的特征,它提供了網(wǎng)絡(luò)上的服務(wù)的概念。企業(yè)bean可以存在于不同的地址空間,并且一般也是如此。但是E J B設(shè)計的核心是集中于企業(yè)級系統(tǒng),依靠J a v a軟件來構(gòu)成企業(yè)應(yīng)用的后端事務(wù)邏輯。E J B主要用于支持簡便地構(gòu)造事務(wù)邏輯,優(yōu)化企業(yè)網(wǎng)絡(luò)中已有的事務(wù)、消息及數(shù)據(jù)庫服務(wù),因此E J B被大量地用于配置企業(yè)軟構(gòu)件之間相對靜態(tài)路徑。只要系統(tǒng)的邏輯不發(fā)生變化,也就不需要重新組織bean之間的連接。同樣, E J B是在設(shè)計時決定如何連接,而相反J i n i是動態(tài)的,它在運行時發(fā)現(xiàn)服務(wù)并在運行時連通它們。,5,Jini的

4、五個基本概念, 發(fā)現(xiàn)(D i s c o v e r y)。 查找(L o o k u p)。 租借(L e a s i n g)。 遠(yuǎn)程事件( Remote Event)。 事務(wù)(Tr a n s a c t i o n)。 這些概念以一組軟件庫和規(guī)范的形式實現(xiàn),可被J i n i群體中的參與程序使用。,6,發(fā)現(xiàn),一個J i n i實體(服務(wù)或應(yīng)用)在使用其他J i n i服務(wù)之前,必須先找到一個或多個J i n i群體,途徑是尋找跟蹤該群體中共享資源的查找服務(wù)。這個尋找可用的查找服務(wù)的過程稱為發(fā)現(xiàn)。 J i n i發(fā)現(xiàn)協(xié)議是J i n i程序?qū)ふ襃 i n i群體的途徑,一旦找到某個群體,

5、 J i n i實體就會按照加入?yún)f(xié)議的一系列規(guī)范加入到該群體中,并在該群體中公布服務(wù)。,7,對于查找服務(wù),沒必要各群體一對一地映像,網(wǎng)絡(luò)上的每個查找服務(wù)都可以為一個或多個群體提供服務(wù),每個群體也可以有一個或多個查找服務(wù)器支持。查找服務(wù)要明確由管理員來啟動事實上,這是創(chuàng)建J i n i群體時需要運行的唯一一個J i n i服務(wù)。,8,發(fā)現(xiàn)協(xié)議,發(fā)現(xiàn)協(xié)議不止一個, J i n i支持多個發(fā)現(xiàn)協(xié)議,分別用于不同的環(huán)境下。 組播請求協(xié)議(Multicast Request Protocol),當(dāng)一個應(yīng)用或服務(wù)首次被激活,需要尋找附近活躍的查找服務(wù)時使用此協(xié)議。 組播通告協(xié)議(Multicast Ann

6、ouncement Protocol),查找服務(wù)用此協(xié)議聲明自己的存在,當(dāng)已存在的群體中啟動一個新的查找服務(wù)時,其他相關(guān)的參與者都可通過組播通告協(xié)議被通知。,9,單播發(fā)現(xiàn)協(xié)議(Unicast Discovery Protocol),在一個應(yīng)用或服務(wù)已經(jīng)知道了要連接的特定查找服務(wù)時,使用此協(xié)議。單播協(xié)議用于直接連向某連接服務(wù),可能此服務(wù)并不在本地網(wǎng)絡(luò),只是知道它的名稱。查找服務(wù)以J i n i開頭的U R L格式來命名,作為協(xié)議的唯一標(biāo)識(如j i n i : / / t u r b o d o g . p a r c . x e r o x . c o m是指運行于t u r b o d o

7、g . p a r c . x e r o x . c o m機器上缺省端口的查找服務(wù))。當(dāng)需要在服務(wù)和查找服務(wù)之間建立靜態(tài)連接時,可使用單播發(fā)現(xiàn)協(xié)議,比如在需要直接把查找服務(wù)聯(lián)合到一起時可以使用此協(xié)議。,10,有關(guān)發(fā)現(xiàn)過程的最終結(jié)論是,執(zhí)行發(fā)現(xiàn)功能的實體有多個引用被傳送到被請求群體的查找服務(wù)中,通過這些引用,服務(wù)可表明自己能提供的功能,客戶和服務(wù)就可以判斷一個群體中有哪些可用的服務(wù)了。客戶還可以在查找服務(wù)上執(zhí)行一些其他的操作,比如說事件請求。,11,查找,發(fā)現(xiàn)是尋找查找服務(wù)的過程,而查找是指對那些查找服務(wù)可做的事情??梢园巡檎曳?wù)想像成一個名字服務(wù)器,實際上也就是一個通常長時間運行的進程,用

8、于跟蹤加入到J i n i群體中的所有服務(wù)。不過和傳統(tǒng)的名字服務(wù)器不同的是,名字服務(wù)器只提供一個從字符串名字到存儲對象的映像,而J i n i查找服務(wù)支持更豐富的語義。,12,可以通過對象的特殊類型搜尋J i n i查找服務(wù),而且由于查找服務(wù)理解J a v a類型的語義,甚至可以通過查找存儲對象的超類和超接口進行搜尋。在發(fā)現(xiàn)過程成功地找到一個查找服務(wù)時,它返回一個實現(xiàn)查找接口(這個接口實際上稱為S e r v i c e R e g i s t r a r,或許稱為L o o k u p更合適些)的對象的引用。查找服務(wù)的內(nèi)部實現(xiàn)細(xì)節(jié)是不公開的。,13,14,發(fā)布服務(wù),在做完發(fā)現(xiàn)工作,獲得了一個

9、或多個查找對象之后,應(yīng)該如何處理它們呢?可以把查找服務(wù)抽象地想象為在維護一個“服務(wù)項目”列表,每個服務(wù)項目中包含一個對象和一組用于描述服務(wù)的屬性,群體中的其他參與者可下載此對象以使用服務(wù)。圖3 - 1中給出了一個持有三個服務(wù)項目的查找服務(wù),每個服務(wù)項目包含一個“代理”對象和一組描述服務(wù)的屬性。稍后我們將提到,這個代理對象可被需要使用服務(wù)的客戶所下載,盡管一個客戶可能不知道特定服務(wù)的實現(xiàn),它可以把服務(wù)的代理作為“前端”實現(xiàn)與服務(wù)的互操作。,15,對于一個希望把自己發(fā)布到群體中,也就是想對那些要使用它的人表現(xiàn)為可用的服務(wù)(如打印機),可以把自己加入到所有從發(fā)現(xiàn)過程中返回的查找服務(wù)中,加入的途徑是使

10、用S e r v i c e R e g i s t r a r接口中的register ( )方法。,16,可下載的代理,服務(wù)項目中最重要的部分即是稱為服務(wù)代理的序列化的J a v a對象,在服務(wù)中它是唯一的。當(dāng)其他的實體,無論是另外的J i n i服務(wù)還是想利用此服務(wù)的應(yīng)用,找到這個服務(wù)項目時,代理對象就會被復(fù)制到該實體的J a v a虛擬機中,實體通過調(diào)用此代理對象來使用服務(wù)。,17,可下載服務(wù)代理的思想,是使J i n i可以在不安裝驅(qū)動程序或軟件的情況下使用服務(wù)和設(shè)備的關(guān)鍵所在,服務(wù)發(fā)布可用來訪問自己的代碼。例如,一個打印機發(fā)布一個理解如何控制此打印機的代理,掃描儀發(fā)布知道如何使用此

11、掃描儀的代理,使用服務(wù)的應(yīng)用程序下載相應(yīng)代理對象并使用它,不必理解代理是如何實現(xiàn)的,或者是如何與后端的設(shè)備或進程交流的。,18,在某些方面,J i n i代理與Java Applet有些相像:A p p l e t提供了一種不需要管理的方法來獲取并使用應(yīng)用程序, J i n i代理也提供了一種不需要管理的方法來獲取并使用“粘合邏輯”,從而與后端相關(guān)的服務(wù)或設(shè)備進行通信。不過A p p l e t一般是設(shè)計為“為人所使用”,即通常表現(xiàn)為當(dāng)用戶請求時以圖形界面形式出現(xiàn)在Web頁中,而J i n i代理的設(shè)計是面向被查找、下載,并在程序中使用。J i n i代理也可被看作是安全的網(wǎng)絡(luò)上的設(shè)備驅(qū)動程序

12、,在那些需要它們的客戶要求時下載到客戶端。,19,如何找到服務(wù),使用者(它自己可以是加入了群體的服務(wù))一旦擁有了一個查找服務(wù)的引用,就可以搜尋所有服務(wù)項目以找到所需的服務(wù)。J i n i提供了多種搜尋的方法,可以根據(jù)每個服務(wù)項目中所包含的可下載代理對象的類型進行搜尋,也可以根據(jù)服務(wù)的特有標(biāo)識符(如果知道的話),或者還可以根據(jù)每個服務(wù)項目中包含的屬性進行搜尋。這個找到所需服務(wù)的過程是查找服務(wù)的核心(自然S e r v i c e R e g i s t r a r接口有一個稱為lookup ( )的接口完成此功能)。,20,無論用哪種方式,一旦指定了搜尋的參數(shù)并調(diào)用lookup ( ),返回的值

13、就是服務(wù)項目的代理對象。在圖3 - 3中,將看到一個客戶應(yīng)用程序( J i n i服務(wù)的使用者)從查找服務(wù)下載一個特定服務(wù)的代理的過程。代理被下載后,客戶就使用代理作為“前端”直接與服務(wù)的“后端”進行通信。“后端”一般是長期運行的進程,或是連到網(wǎng)絡(luò)上的硬件設(shè)備。代理可能很復(fù)雜,也可能很簡單,例如,一些“智能代理”可能要與后端實現(xiàn)私有的通信協(xié)議,而另外一些可能只是R M I產(chǎn)生的存根,用于與一個后端的遠(yuǎn)程對象進行通信。,21,22,租借,在軟件系統(tǒng)(如J i n i群體)需要長時間運行,希望幾個月甚至幾年不出現(xiàn)中斷時,可靠性問題尤其重要。,23,舉一個例子,假如數(shù)字相機設(shè)備在群體的查找服務(wù)中注冊

14、加入到一個群體中(相機可通過專用設(shè)備連入網(wǎng)絡(luò),或接到連網(wǎng)的計算機上),發(fā)布信息表明自己可用且一切正常??墒侨绻脩粼诓魂P(guān)掉設(shè)備的情況下隨意將相機拔掉,問題就來了。對于群體中的其他成員來說,這和部分失敗的情形有些類似,它們不知道是否相機所連的遠(yuǎn)程主機已經(jīng)關(guān)掉,或只是響應(yīng)比較慢,或者是由于更改了配置不能響應(yīng)網(wǎng)絡(luò)傳輸,或是相機的軟件出現(xiàn)故障,甚至是相機已經(jīng)壞掉。無論如何,由于和網(wǎng)絡(luò)之間通信的突然結(jié)束,相機不能在斷開連接之前先退出注冊。,24,在長時間運行的分布式系統(tǒng)中這種狀態(tài)的存在是一個嚴(yán)重的問題,我們不能保證服務(wù)不突然崩潰,或在斷開連接之前都有機會取消注冊。在上例中,相機會占用查找服務(wù)中的資源,它

15、要求查找服務(wù)使用存儲和處理能力來維護自己的注冊。如果J i n i仍使用傳統(tǒng)的方法來分配資源,注冊在被取消之前將保持活躍,除非有系統(tǒng)管理員瀏覽日志后強行清除有關(guān)服務(wù)。,25,首先,它不能保證系統(tǒng)可自行修復(fù),部分失敗不能被識別并清除,那些代表其他服務(wù)的占有資源的服務(wù)將無限增長;其次更糟的是,它需要人為地管理系統(tǒng)。,26,1. 基于時間的資源保留 為解決這個問題, J i n i使用了一種稱為租借的技術(shù)。 租借的基本思想是:不再保證可以在無限制的時間內(nèi)訪問資源,資源只是在一段固定的時間內(nèi)“借給”某使用者, J i n i租借要求那些證明確實與某部分資源密切相關(guān)的使用者繼續(xù)占有相應(yīng)資源。,27,J

16、i n i租借與現(xiàn)實生活中的租借十分相似, J i n i租借可能被借出者所拒絕,租約持有者可以續(xù)訂。除非是續(xù)訂,否則一段確定的時間之后租約就會到期;租約也可以提前取消(和現(xiàn)實生活中不同的是,毀約沒有懲罰)。租約可以通過談判確定。不過和現(xiàn)實生活中類似,租借提供方在提供租約的細(xì)節(jié)上擁有最后的發(fā)言權(quán)。,28,第三方租借,J i n i的租借和現(xiàn)實生活中的許多租借有一個重要的區(qū)別就是: J i n i租借的設(shè)計允許第三方代表另外的實體實施租借,第三方只是完成租借機制的整個過程,租約實際上仍是有效的(這有些像岳母以女婿的名義租了一套漂亮的房屋供她居?。?29,遠(yuǎn)程事件,J i n i服務(wù)和系統(tǒng)中的許

17、多軟件成分一樣,不論是分布式的還是本地的,在發(fā)生相關(guān)的變化時,都需要被通知到。例如,在本地編程模型中,當(dāng)用戶點擊鼠標(biāo),或關(guān)閉一個窗口時,可能相應(yīng)的軟件成分就需要被通知到。,30,這是異步通知的例子。首先是將消息直接送到軟件部分,然后軟件在正常的控制流之外處理相應(yīng)的事件。也就是說,這種方法不是持續(xù)輪詢檢查是否發(fā)生了相關(guān)的變化,而是在變化發(fā)生后“自動”調(diào)用軟件中的相應(yīng)方法來處理。這種異步通知的特點經(jīng)??梢院喕浖木幊蹋浖拈_發(fā)者不必加入一些代碼來定期檢查某些外部實體的狀態(tài)。,31,遠(yuǎn)程和本地事件,在分布式計算環(huán)境下情況不同,因此J i n i需要稍有改進的事件模型來處理相應(yīng)運行的程序。 本地發(fā)

18、送的事件和分布式發(fā)送的事件存在許多重要的差別。 在本地的情況下,要使事件按照它們產(chǎn)生的順序發(fā)送相對容易得多,原因是本地事件發(fā)送機制一般使用集中的隊列,就像一個“阻塞點”,強制事件按串行順序發(fā)送。在分布式系統(tǒng)中,由于缺少集中事件管理器,加上事件在網(wǎng)絡(luò)上傳輸存在的問題,除非損失很多性能,否則很難做到保持順序( J a v a的AWT事件派發(fā)機制實際上對本地事件也沒有保證確定順序,不過一般說來,本地事件發(fā)送機制實現(xiàn)順序相對較容易)。,32,在本地情況下,除非是毀滅性故障(如整個應(yīng)用崩潰),要發(fā)送的事件總能被送到,獨立的系統(tǒng)并不需要像分布式系統(tǒng)那樣考慮部分失敗的問題。分布式系統(tǒng)中的部分失敗,不論是機器

19、故障還是網(wǎng)絡(luò)問題,都會使事件不能正確發(fā)送。,33,一般發(fā)送本地事件的開銷與處理事件的開銷相比要小很多,通常情況“發(fā)送”事件的過程只不過是調(diào)用一個方法通知另外的相關(guān)程序事件已經(jīng)到達(dá),而接收方在事件到達(dá)后花費的處理時間相對要大許多。 在遠(yuǎn)程情況下就完全不同,事件的發(fā)送時間與本地系統(tǒng)比要大幾個數(shù)量級,占事件處理時間的大部分。性能上的差異意味著分布式系統(tǒng)的設(shè)計應(yīng)該考慮盡量減少事件的產(chǎn)生。,34,在本地情況下,如果指定了某一部分是事件的接收者,發(fā)送者就知道事件可安全到達(dá),而在異地情況下問題就復(fù)雜得多。遠(yuǎn)端事件的接收方可能會突然從網(wǎng)絡(luò)中退出,而此時發(fā)送方不知道這一情況,只能繼續(xù)嘗試發(fā)送;也有可能接收方已經(jīng)崩潰,這時發(fā)送方應(yīng)考慮丟棄事件;或者還有可能接收方會在一段時間內(nèi)處于非活躍狀態(tài),不能處理事件,這種情況在接收方使用R M I激活框架時會經(jīng)常發(fā)生。不活躍的對象可能希望發(fā)送方為其保存相關(guān)事件,然后定期醒來檢查正在等待的事件。,35,事務(wù),關(guān)于分布式系統(tǒng)對可靠性、健壯性的需要,以及部分失敗可能帶來的嚴(yán)重惡果,我們已經(jīng)討論了許多。所謂部分失敗,就是計算中的某一步失敗,或是計算所需的某個組成部分出現(xiàn)了故障。如果計算的所有現(xiàn)場都失敗了,恢復(fù)工作倒更容易些,因為我們知道沒有哪項任務(wù)被成功地完

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論