JavaSpaces
| 導航 併發程式設計 主題: |
在 J2EE 之後,Sun 對網路計算的下一步發展有了願景:在網路環境中,將會有許多獨立的服務和消費者。這就是 JavaSpaces。JavaSpaces 將允許這些服務/消費者以穩健的方式動態互動。它可以被視為一個物件儲存庫,為 Java 物件提供分散式持久物件交換機制(持久化可以位於記憶體或磁碟中)。它可以用來儲存系統狀態並實現分散式演算法。在 JavaSpace 中,所有通訊夥伴(對等體)透過共享狀態進行通訊。它是 元組空間 思想的實現。
當有人想要實現可擴充套件性和可用性,同時降低整個系統的複雜性時,就會使用 JavaSpaces。
程序執行簡單的操作來將新物件寫入 JavaSpace、從 JavaSpace 中獲取物件或從 JavaSpace 中讀取(複製)物件。
在傳統的應用程式中,物件在呈現給終端使用者之前是從資料庫中組裝的。在 JavaSpace 應用程式中,我們保留了現成的“終端使用者”物件,並將它們儲存在 JavaSpace 中。在 JavaSpace 應用程式中,服務彼此解耦;它們透過它們寫入 JavaSpace 以及從 JavaSpace 讀取/獲取的物件進行通訊。服務使用模板物件來搜尋它們想要從空間中獲取或讀取的物件。
JavaSpaces 技術是 Java Jini 技術的一部分。JINI 的基本功能是
- 無需使用者干預即可將服務上線或下線。(與 EJB 形成對比,在 EJB 中,客戶端程式必須知道 EJB 部署的伺服器和埠號。在 JINI 中,客戶端應該找到,在網路中發現服務。)
- 自愈透過在服務(服務消費者)來來去去時進行適應。服務需要定期續租來表明它們仍然可用。
- JINI 服務的消費者不需要事先了解服務的實現。實現是動態下載並執行在消費者 JVM 上,無需配置和使用者干預。例如,終端使用者可能會看到略微不同的使用者介面,具體取決於當時使用的是哪項服務。這些使用者介面程式碼的實現將由正在使用的服務提供。
- 事實上,實現執行在消費者/客戶端的 JVM 上,可以透過消除遠端呼叫的需要來提高效能。
一個最小的 JINI 網路環境包括
- 一個或多個 服務
- 一個查詢服務,儲存已註冊服務的列表
- 一個或多個 消費者
查詢服務在 :Jini 查詢服務規範 (reggie) 中有描述。此服務介面定義了可以在查詢服務上執行的所有操作。客戶端透過向實現特定介面的查詢伺服器傳送請求來查詢服務。客戶端向查詢伺服器請求所有實現特定服務介面的服務。查詢服務返回所有已註冊服務的服務物件,這些服務實現了給定的介面。客戶端可以呼叫該物件上的方法,以直接與伺服器互動。
Jini 發現和加入規範描述了客戶端如何找到 jini 查詢服務。有一個協議可以做到這一點,jini 帶有一組實現該協議的 API。Jini 發現實用程式規範定義了一組用於處理該協議的實用程式類。
當服務向查詢服務註冊時,它會從查詢服務獲得租約,如Jini 分散式租賃規範中所述。
