1. JXTA定義
JXTA是深入的,特別的為了實現pear to pear網路計算而設計的一組(6種)協議.使用JXTA協議,pears能夠自己組織和配置自己的pear groups而脫離現在的互聯網,並且不需要實現集中管理的架構(集中管理架構流行於現在很多p2p軟體).
2. JXTA 概念
Pear同位體
一個可以進行虛擬通信的點,可以是一台電腦,一個電話,pda等.一台設備也可以有多個pear(雖然這是個不好的設計,但是對於debuging來說很有用).
每一個同位體能夠和一些服務聯繫在一起,比如路由,網關,rendezvous等等.這些服務提供了一些比如搜索和通訊的服務.
不是說所有的同位體都要實現這些服務,但是,有一部分實現這些服務確保整個網格的運行還是有必要的.
比較通常的來講,一個設備上一般只有一個pear,比如進行分佈搜索,內容共享,帶寬共享等,這樣是有好處的.然而,並不排除一個設備上多個pear,因為pear是一個個分開的實體,多個pear並沒什麼問題,只是會多消耗一些資源.有幾種情況我們可以使用一個multi-pear的設備:
1. 提供proxy服務
2. 與已經存在的伺服器建立介面
但是,這個已經不必要了,可以由其他方法實現,比如基於p2p的分散式系統.
,我們盡量不要建立multi-sever的設備,違背true p2p的思想.
Pear Group:同位體組
一個Pear Group是提供一個通用服務的同位體的集合.
由於安全以及隱私等方面的原因可以組成一個pear group.這個pear group是實現了安全和加密等,類似於一個VPN.
Endpoint:端點
端點是JXTA的基本的定址形式,一個端點是某個同位體實現了某種協議的地址.一個同位體可以實現多種協議,
也就可能擁有多個端點.
最簡單的端點的例子就是ip地址和port.
Pipe:管道
管道在JXTA中是最基本的概念,是對等點之間的數據傳輸的主要方式.對等管道協議(PBP)明確規範了對等管道的綁定,解析,響應.
有兩種形式:
1. 點對點形式.
2. 廣播形式.
Endpoint and Pipes:端點和管道
一個同位體可能含有多個端點-因為實現了多種協議.比如,我們可以用tcp進行連接,也可以用http進行連接-當有firewall的時候.
如果覺得一個pear實現多種協議很麻煩,也可以只用一種協議:http.
Advertisement:廣告
一個廣告是一個XML結構的文檔,用來命名,描述和公布現有的資源,如同位體,同位體組,管道,或服務.各種廣告的格式請參考JXTA規範.
大概說明:
廣告的格式是utf8編碼的,為了更有效的利用資源,
並沒有利用unicode編碼.因為unicode是16位而utf8是8位.
Message:消息
有兩種形式的消息:
1. Xml格式的
2. 二進位格式的.之
有這個格式的,是因為這個速度比較快,雖然message是二進位的,但是傳輸消息的協議仍然是xml格式的.
Identifiers:標誌
Rendezvous Pear:
從其他同位體進行查詢操作的同位體,Rendezvous Pear也可以委派查詢操作給其他的pear-當然也必須是一個Rendezvous Pear.Rendezvous Pear其實可以說是在一個對等網路環境中代替原來的非完全對等環境中的集中伺服器的東西.
Rendezvous Pear還能夠傳遞檢索.也能夠傳遞發現(discovery)給其他的Rendezvous Pear.
Router Pear:路由同位體
實現端點協議的同位體.和路由器功能類似
Gateway Pear:網關同位體
通訊的中間體,作為傳遞消息的中間體,和Rendezvous Pear不同.現在支持的網關協議有tcp和http(都是通過管道來組織).
3. 同位體和組(peer and group)
為什麼使用組?
安全,隱私,更加高效的數據共享.
4. 廣告(Advertisements)
同位組廣告:
定義這個同位組的識別標誌和服務:
Name
DESC
GID(Peer group id)
MSID
SVC(Service)-list of the service denoted by MCID and Parmeters
Peer Advertisements
同位體廣告:
Name
DESC
PID(Peergroup id)
Debug Flag(Dbg)-optional tag for debugging
Service(SVC)
模塊-Modules
模塊是定義了一個同位體或者一個同位體組所提供的服務.
模塊類廣告-Module Class Advertisement
定義了一種行為.
格式:
MCID(Module class id)-Module唯一的識別標誌
Name-模塊名稱,用來進行search和識別,不保證唯一
DESC(Descripition)-描述:供搜索和識別用.
模塊規範描述廣告-Module Specification Advertisement
比較詳細的描述模塊的規範定義.
Module Spec ID(MSID)-定義一個模塊-和MCID有和區別?
Compatibility(COMP)兼容性-定義代碼的兼容性,跨語言和跨平台.
Name
Desc
Sprcification URI document.定義URI
Vers-the version
Parm-定義參數-供Implementation使用
Proxy-ModuleSpecID of a proxy if one exists
Authenticator-ModuleSpecID of an authenticator module if required
模塊執行廣告
Name
DESC
MSID
COMP
PURI(Package URI)-Download the special code
Code-a reference code,for a java module,this is a classname
Prov(Provider)
管道廣告-Pipe Advertisements
Name
ID
TYPE-Related to a protocol, unicasttype,unicastsecuretype,propagatetype
端點路由信息-Endpoint Router Messages
查詢和回應消息,以發現Router.分查詢和回應兩類Messages
消息-Messages
分為XML message和Binary Message
管道綁定協議-Pipe Binding Protocol
要建立管道,一個peer必須憲發布一個管道廣告,表示自己在request.接收方會回應並同時發布廣告.
Request Adv:
Msgtype-Query or Respond
PopeId-Pipe id being resolved
Type-the type of pope resolution requested
Cached-cache里是否有答案
Peer-指定鏈接的peer
Response Adv:
Msgtype
Pipeid
Type
Found
Resolver-解釋器
用來發現來自對等組內其它對等機的廣告;有助於發現對等機、對等組、管道和服務
解釋器的ResolverQuery message的schema:
credential-信任證書 of the peer sending the query
HandlerName
QueryID
Query
Rendezvous Protocol:
描述了消息是怎麼在組裡面廣播的.
使用端點協議來定位同位體和路由以及傳輸
使用Rendezvous Protocol來傳輸消息.
Rendezvous ADV:
Name
Rdvgroupid-peergroup uuid
Rdvpeerid-peer id of the Rendezvous peer