<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yinfs1901

     

    使 P2P 能進(jìn)行交互操作:Jxta的故事

    對(duì)最新 P2P 技術(shù)兼具實(shí)用性和可操作性的介紹
    Sing Li (westmakaha@yahoo.com)
    作家,Wrox 出版社
    2001 年 8 月

    對(duì)等網(wǎng)絡(luò)即將來(lái)臨了,它承諾要?jiǎng)?chuàng)建一個(gè)根本不同的計(jì)算世界 — 而且,在某些方面 — 比基于老模式客戶機(jī)/服務(wù)器的要更好。Jxta 工程是按社區(qū)方式運(yùn)作的,旨在為對(duì)等應(yīng)用構(gòu)建實(shí)用應(yīng)用程序底層。雖然 Jxta 的參考實(shí)現(xiàn)是用 Java 語(yǔ)言寫(xiě)的,但事實(shí)上它對(duì)當(dāng)今現(xiàn)有的任何語(yǔ)言,操作系統(tǒng)(OS)或平臺(tái)都會(huì)欣然接納 — 而且,更重要的是,對(duì)于人們現(xiàn)在想都沒(méi)想過(guò)的技術(shù),它也做好了準(zhǔn)備。在本文,即此系列的第一部分(共 3 部分)中,Java 開(kāi)發(fā)人員兼作者 Sing Li 解釋了支持 Jxta 的基本概念和協(xié)議,使您為閱讀后面的文章做好準(zhǔn)備。后面這些文章將教您試驗(yàn) Jxta shell 并且構(gòu)建 P2P 應(yīng)用。請(qǐng)?jiān)谟懻撜搲c作者和其他讀者共享您關(guān)于本文的心得。
    對(duì)等(P2P)網(wǎng)絡(luò)與傳統(tǒng)的客戶機(jī)/服務(wù)器或多層服務(wù)器網(wǎng)絡(luò)不同,對(duì)等網(wǎng)絡(luò)中的對(duì)等機(jī)是彼此直接通信的。這種通信無(wú)需依賴集中式服務(wù)器或資源就可完成。在 P2P 網(wǎng)絡(luò)中,通過(guò)對(duì)等機(jī)之間的交互操作就可以完成工作,共享信息。通過(guò)創(chuàng)建有潛力展示非常高的可用性和容錯(cuò)能力的計(jì)算資源網(wǎng)絡(luò),P2P 體系結(jié)構(gòu)使真正的分布式計(jì)算成為可能。

    傳統(tǒng)的客戶機(jī)/服務(wù)器和多層次體系結(jié)構(gòu)已經(jīng)是業(yè)界的識(shí)途老馬,而采用 P2P 體系結(jié)構(gòu)的系統(tǒng)則還只是初生牛犢。Jxta 工程是 Sun 為了向構(gòu)建跨平臺(tái)、跨操作系統(tǒng)(OS)和跨編程語(yǔ)言的 P2P 應(yīng)用提供實(shí)用應(yīng)用程序底層而發(fā)動(dòng)的突襲。這項(xiàng)工程現(xiàn)在是開(kāi)放源代碼的,Sun 也參與其中,請(qǐng)參閱參考資料部分以獲取關(guān)于 Jxta 社區(qū)的信息。

    Jxta 的設(shè)計(jì)理念
    Jxta 工程的組件是認(rèn)真的設(shè)計(jì)分工的產(chǎn)物。它們?yōu)榉盒?P2P 網(wǎng)絡(luò)提供最小需求,去除了所有特定于策略的邏輯和組件。這樣,就僅剩下幾乎所有的應(yīng)用程序都能使用的構(gòu)件要素,不考慮目標(biāo)用戶和特定實(shí)現(xiàn)。在接下來(lái)的幾個(gè)月和幾年里,Jxta 核心社區(qū)的一個(gè)主要任務(wù)就是確保這種普遍適用性仍然是真實(shí)的。您可以爭(zhēng)辯說(shuō),P2P 最引人注目的應(yīng)用程序尚未開(kāi)發(fā),那么如果 Jxta 把特定于策略或?qū)崿F(xiàn)的細(xì)節(jié)嵌入其基礎(chǔ)構(gòu)造層后就完事的話,那么這些尚未想像到的應(yīng)用程序就可能永遠(yuǎn)不會(huì)和這個(gè)平臺(tái)一起工作。換句話說(shuō),Jxta 組件沒(méi)有強(qiáng)加一些不必要的策略,也沒(méi)有硬性規(guī)定特定的應(yīng)用操作模型,使得簡(jiǎn)單地構(gòu)造 P2P 應(yīng)用成為可能,也更方便。

    Jxta 工程對(duì) Java 平臺(tái)的獨(dú)立性
    在我們討論 Jxta 的核心構(gòu)件的過(guò)程中,您會(huì)發(fā)現(xiàn)我們沒(méi)有提到任何與 Java 技術(shù)相關(guān)的東西!Sun 已經(jīng)為 Jxta 提供了初步的 Java 語(yǔ)言實(shí)現(xiàn),但令人驚訝的是,Jxta 工程既不特定于 Java 編程語(yǔ)言,也不特定于 Java 平臺(tái)。換句話說(shuō),任何人都可以在任何硬件平臺(tái)上,用任何操作系統(tǒng)、任何編程語(yǔ)言實(shí)現(xiàn)基于 Jxta 的網(wǎng)絡(luò)。添加了這種 Jxta 的傳輸不可知特性(您將看到,它甚至不依賴于 TCP/IP),您就有了一個(gè)準(zhǔn)備著交互操作的 P2P 基礎(chǔ)構(gòu)造
    在其核心處使用 XML
    我們很快將更詳細(xì)地說(shuō)明,Jxta 目前使用 XML 作為消息和廣告的格式,這對(duì)于使 Jxta 具有互操作性很有幫助。因?yàn)?XML 技術(shù)的簡(jiǎn)單性和普遍可訪問(wèn)性,軟件幾乎可以創(chuàng)建在任何平臺(tái)上以生成并解析 Jxta 消息。

    Jxta 核心構(gòu)件
    構(gòu)成 Jxta 系統(tǒng)的組件與能在很多 P2P 網(wǎng)絡(luò)實(shí)現(xiàn)中識(shí)別出來(lái)的組件完全一樣

    • 對(duì)等機(jī)和對(duì)等組
    • 服務(wù)
    • 管道
    • 消息
    • 廣告

    對(duì)這些組件中的每一個(gè)所做的研究將揭示 P2P 通信在 Jxta 網(wǎng)絡(luò)上是如何工作的。

    對(duì)等機(jī)和對(duì)等組
    毫無(wú)疑問(wèn),對(duì)等網(wǎng)絡(luò)是由彼此相互通信的對(duì)等機(jī)組成的。從根本上說(shuō),整個(gè)連結(jié)著的宇宙就是一個(gè)大型 P2P 系統(tǒng)。但由于目前連通性和可用帶寬的限制,把整個(gè)因特網(wǎng)當(dāng)作一個(gè)巨型 P2P 網(wǎng)絡(luò)來(lái)使用是不切實(shí)際的。相反,一些劃分是必要的。

    物理網(wǎng)絡(luò)的邏輯劃分產(chǎn)生了對(duì)等機(jī)的工作組,P2P 行話稱之為對(duì)等組。對(duì)等組成員資格的交迭沒(méi)有任何約束;換句話說(shuō),任何對(duì)等機(jī)有必要屬于幾個(gè)對(duì)等組,就可以屬于幾個(gè)對(duì)等組。Jxta 規(guī)范并沒(méi)有規(guī)定或推薦組織對(duì)等組的合適方式。在 Jxta 網(wǎng)絡(luò)中,對(duì)等組就是共享資源和服務(wù)的對(duì)等機(jī)的集合。您可以很容易地明白,如果這個(gè)規(guī)范把對(duì)等組限制為例如局域網(wǎng) — 或者甚至是廣域網(wǎng)的一個(gè)子集 — 那么,很多要求組成員資格超出這些物理限制的新應(yīng)用程序的可能性將一概被排除。與 Jxta 的設(shè)計(jì)理念一致,對(duì)等組被規(guī)定為盡可能不受限制、盡可能普遍適應(yīng)。

    請(qǐng)注意,對(duì)等組的存在要求一些維護(hù)成員資格的手段。Jxta 規(guī)范又一次只規(guī)定了維護(hù)組成員資格的最小需求,而沒(méi)有指示該怎樣維護(hù)。這種組成員資格服務(wù)只是核心 Jxta 服務(wù)的一部分,但它可以接受很多種形式 — 例如,它可以是數(shù)據(jù)庫(kù)或目錄服務(wù),還可以是基于集中式或分布式實(shí)現(xiàn)的。

    服務(wù)
    對(duì)等組內(nèi)的對(duì)等機(jī)可以共享使用 Jxta 服務(wù)。事實(shí)上,對(duì)等機(jī)加入一個(gè)組可能主要是為了使用該組內(nèi)可用的服務(wù)。稱為核心服務(wù)的一組服務(wù)對(duì) Jxta 網(wǎng)絡(luò)的基本運(yùn)轉(zhuǎn)是必不可少的。我們已經(jīng)看到了一個(gè)核心服務(wù)的實(shí)例 — 成員資格服務(wù)。表 1 展示了 1.0 版 Jxta 規(guī)范中包含的核心服務(wù)。

    表 1. Jxta 服務(wù)
    服務(wù)名稱 描述
    管道 對(duì)等機(jī)之間通信的主要方式;為信息傳輸提供單向、異步的管道的抽象。
    成員資格 判斷哪個(gè)對(duì)等機(jī)屬于哪個(gè)對(duì)等組;處理對(duì)等組內(nèi)對(duì)等機(jī)的加入和退出。
    訪問(wèn) 一種安全性服務(wù),用于控制對(duì)對(duì)等組內(nèi)服務(wù)和資源的訪問(wèn);對(duì)等組的一種安全性管理器。
    發(fā)現(xiàn) 對(duì)等機(jī)能用來(lái)發(fā)現(xiàn)對(duì)方、其它對(duì)等組的存在、管道、服務(wù)等等的一種方式。
    解析器(Resolver) 允許對(duì)等機(jī)通過(guò)引用(Jxta 行話稱之為廣告)間接地引用對(duì)方,對(duì)等組、管道或服務(wù);在運(yùn)行期間,解析器把引用捆綁到實(shí)現(xiàn)上。

    Jxta 工程最初的參考實(shí)現(xiàn)不提供上面列出的五項(xiàng)之外的任何服務(wù)。甚至核心服務(wù)中的一些服務(wù),例如處理安全性的訪問(wèn)服務(wù),也只是實(shí)現(xiàn)了非常基礎(chǔ)的方面。現(xiàn)行的 Jxta 社區(qū)正在為這些服務(wù)中的大多數(shù)充實(shí)細(xì)節(jié),同時(shí)也在定義和實(shí)現(xiàn)對(duì)對(duì)等組或許有益的新服務(wù)(一般地或特定地)。例如,該社區(qū)目前正在進(jìn)行的新服務(wù)包括:

    • 監(jiān)視和計(jì)量服務(wù)
    • 匿名的、安全的金融交易付款服務(wù)
    • Web 內(nèi)容和服務(wù)的分布式搜索服務(wù)

    在 Jxta 1.0 規(guī)范中,一個(gè)運(yùn)行中的服務(wù)實(shí)例總是和一個(gè)對(duì)等機(jī)聯(lián)系在一起(您可以把它想象成是由一個(gè)對(duì)等“服務(wù)器”主管的)。在一個(gè)對(duì)等組內(nèi),只能有一個(gè)服務(wù)實(shí)例和指定的對(duì)等機(jī)聯(lián)系在一起。這種類型的服務(wù)被視為對(duì)等服務(wù);如果主管該對(duì)等服務(wù)的對(duì)等機(jī)當(dāng)機(jī)了,那么將無(wú)法獲得該服務(wù)。另一方面,同一服務(wù)的多個(gè)實(shí)例被冗余地安裝在一個(gè)對(duì)等組內(nèi)的多個(gè)對(duì)等機(jī)上 — 這被稱為對(duì)等組服務(wù)。對(duì)等組服務(wù)是 Jxta 網(wǎng)絡(luò)的高可用性和容錯(cuò)性的關(guān)鍵。Jxta 應(yīng)用的實(shí)現(xiàn)者可以自由地把任意 Jxta 服務(wù)作為對(duì)等服務(wù)或?qū)Φ冉M服務(wù)進(jìn)行安裝。管道服務(wù),即為對(duì)等通信提供邏輯管道抽象的核心 Jxta 服務(wù),常常被作為對(duì)等組服務(wù)來(lái)實(shí)現(xiàn),以確保其總是可用。

    管道
    正如 Jxta 規(guī)范定義,在對(duì)等機(jī)之間傳輸數(shù)據(jù)、文件、信息、代碼或多媒體內(nèi)容的一種方式是通過(guò)邏輯管道。Jxta 管道用于在對(duì)等機(jī)之間發(fā)送消息(可帶任意內(nèi)容)。

    一個(gè)管道實(shí)例,從邏輯上講,是對(duì)等組內(nèi)的一個(gè)資源。管道實(shí)例的實(shí)際實(shí)現(xiàn)通常情況下是通過(guò)管道服務(wù)完成的。與傳統(tǒng)(類似 UNIX 的)的系統(tǒng)不同,Jxta 管道是單向的、異步的。需要雙向通信的兩個(gè)對(duì)等機(jī)將不得不創(chuàng)建兩個(gè)獨(dú)立的管道實(shí)例。也跟傳統(tǒng)機(jī)制如 UNIX 管道或 TCP/IP 套接字不同,Jxta 管道的末端可以在不同的時(shí)間連接到不同的對(duì)等機(jī)上,或者根本不連接。在為 P2P 網(wǎng)絡(luò)上的服務(wù)提供冗余實(shí)現(xiàn)方面,只此一個(gè)單一概念就是革命性的一步。對(duì)等機(jī)可以在任一點(diǎn)及時(shí)邏輯地“拾起”管道。例如,設(shè)想一個(gè)想使用拼寫(xiě)檢查器服務(wù)的對(duì)等機(jī)。它可以連接到一個(gè)對(duì)等組的拼寫(xiě)檢查器管道(該管道是被作為冗余對(duì)等組服務(wù)實(shí)現(xiàn)的)上。在這種情況下,只要至少有一個(gè)拼寫(xiě)檢查器的實(shí)例還在該對(duì)等組內(nèi)的某個(gè)地方運(yùn)行,該對(duì)等機(jī)就還能得到服務(wù)。

    Jxta 1.0 規(guī)范提供了兩種一般類型的管道:點(diǎn)對(duì)點(diǎn)和廣播(propagate)。

    對(duì)等機(jī)可以使用點(diǎn)對(duì)點(diǎn)管道連接到另一個(gè)對(duì)等機(jī)并單向傳輸消息。對(duì)等機(jī)可以使用廣播管道連接到一個(gè)或多個(gè)其它對(duì)等機(jī)并向它們?nèi)w傳輸消息。從本質(zhì)上講,點(diǎn)對(duì)點(diǎn)管道是一對(duì)一的消息傳輸機(jī)制,廣播管道則是一對(duì)多的消息傳輸機(jī)制。Jxta 社區(qū)目前正在多對(duì)多消息傳輸機(jī)制方面努力;這個(gè)機(jī)制已經(jīng)被命名為 Jxta 導(dǎo)線(wire)。

    不管是什么類型的管道,通過(guò)管道載送的信息塊都稱為 Jxta 消息。那么,這些消息的確切格式是什么樣子呢?

    消息
    Jxta 消息是通過(guò)管道從一個(gè)對(duì)等機(jī)傳送到另一個(gè)對(duì)等機(jī)的數(shù)據(jù)束。這里,Jxta 規(guī)范再一次盡可能地使自己普遍適應(yīng),以免不經(jīng)意間在消息的定義中引入任何依賴于實(shí)現(xiàn)的策略。消息被定義為由信封和正文組成的任意大小的束。信封是標(biāo)準(zhǔn)格式,它包括:

    • 報(bào)頭
    • 源端點(diǎn)信息(URI 格式)
    • 目的地端點(diǎn)信息(URI 格式)
    • 消息摘要(可選的 — 出于安全性目的)

    消息正文的長(zhǎng)度是任意的,可以包含一個(gè)可選的信任狀(出于安全性目的)和內(nèi)容。

    請(qǐng)注意,Jxta 消息的定義非常松散。考慮到我們?nèi)粘R话愣际窃诳煽康摹拵У?TCP/IP 網(wǎng)絡(luò)上操作,這樣做的必要性并不是立即可以明了的。但 Jxta 消息的格式必須是靈活的、善于適應(yīng)新環(huán)境的,因?yàn)樗赡芤谒蟹N類的網(wǎng)絡(luò)上實(shí)現(xiàn),而不只是在 TCP/IP 上。設(shè)想在一個(gè)支持 256 字節(jié)數(shù)據(jù)包的不可靠傳輸?shù)木W(wǎng)絡(luò)(象傳統(tǒng)的基于數(shù)據(jù)包的無(wú)線網(wǎng)絡(luò))上的一個(gè) Jxta 實(shí)現(xiàn),您就會(huì)對(duì) Jxta 消息的簡(jiǎn)單定義如何使自己適應(yīng)諸如這樣的不利環(huán)境表示贊賞。

    為了提供一個(gè)標(biāo)準(zhǔn)的、語(yǔ)法上易分析的、通用的編碼機(jī)制,Jxta 消息目前采用 XML 文檔格式。Jxta 利用了 XML 的普遍可訪問(wèn)性和易使用、易編程的特點(diǎn),這意味著 Jxta 可以用大多數(shù)編程語(yǔ)言在大多數(shù)平臺(tái)上很容易地實(shí)現(xiàn) — 只要 XML 語(yǔ)法分析器和生成庫(kù)在那里是可用的。然而,Jxta 本身的設(shè)計(jì)卻使其消息代碼的編寫(xiě)不依賴于 XML 的使用。雖然現(xiàn)在不太可能,但 Jxta 社區(qū)在規(guī)范的未來(lái)版本中包含(或要求)基于非 XML 的消息是完全可能的。

    廣告
    廣告有點(diǎn)像是消息的“堂兄弟”。Jxta 廣告也采用 XML 文檔格式。廣告的內(nèi)容描述了諸如對(duì)等機(jī)、對(duì)等組、管道或服務(wù)等 Jxta 組件實(shí)例的屬性。例如,可以訪問(wèn)另一個(gè)對(duì)等機(jī)的廣告的對(duì)等機(jī)可以設(shè)法直接連到該對(duì)等機(jī)上;可以訪問(wèn)一個(gè)對(duì)等組的廣告的對(duì)等機(jī)可以通過(guò)廣告加入對(duì)等組。目前的因特網(wǎng)中與廣告相似的東西是域名和 Web 站點(diǎn)的 DNS 紀(jì)錄。Jxta 規(guī)范沒(méi)有規(guī)定如何創(chuàng)建、傳播或銷毀廣告。

    互操作性的基礎(chǔ):Jxta 協(xié)議
    互操作性的另一個(gè)關(guān)鍵是這樣一個(gè)事實(shí):核心 Jxta 對(duì)等交互操作模型被完全表示為在底層網(wǎng)絡(luò)上傳輸?shù)囊惶缀?jiǎn)單協(xié)議。換句話說(shuō),既然協(xié)議和消息格式是定義完好的,那么基于 Jxta 的系統(tǒng)間的互操作性完全可以在導(dǎo)線一級(jí)上達(dá)到。

    例如,一個(gè)簡(jiǎn)單的 PDA(8 位處理器,基于 C 語(yǔ)言編程)就可以是一個(gè)運(yùn)行在基于數(shù)據(jù)包的無(wú)線網(wǎng)絡(luò)上的 Jxta 對(duì)等機(jī),它可與同一對(duì)等組內(nèi)的各種系統(tǒng),從 PC 服務(wù)器到大型機(jī),進(jìn)行交互。如果這些對(duì)等機(jī)共享一個(gè)公共網(wǎng)絡(luò)(傳送)并正使用 Jxta 協(xié)議和消息格式進(jìn)行通信,這是可以做到的。

    Sun 已為 Jxta 提供了初步的 Java 語(yǔ)言實(shí)現(xiàn)。Jxta 社區(qū)現(xiàn)在擁有這個(gè)參考實(shí)現(xiàn)。這個(gè)參考實(shí)現(xiàn)為那些想立刻使用 Jxta 的 Java 程序員把事情變簡(jiǎn)單了。而如果您正在非 Java 平臺(tái)上實(shí)現(xiàn) Jxta,那么理解這些協(xié)議就是非常重要的。表 2 簡(jiǎn)要描述了 Jxta 協(xié)議的核心集,涵蓋了發(fā)現(xiàn)(對(duì)等機(jī)如何找到對(duì)方)、廣告(對(duì)等機(jī)如何讓別的對(duì)等機(jī)了解對(duì)等組、管道等信息)、通過(guò)管道進(jìn)行的通信和對(duì)等組成員資格的處理。下面的所有協(xié)議都是建立在傳送器上的 XML 消息交換的基礎(chǔ)上的。同樣地,它們可以用幾乎所有的編程語(yǔ)言在幾乎所有平臺(tái)上實(shí)現(xiàn)。

    表 2. Jxta 核心協(xié)議
    協(xié)議名稱 描述
    對(duì)等發(fā)現(xiàn)協(xié)議 用來(lái)發(fā)現(xiàn)來(lái)自對(duì)等組內(nèi)其它對(duì)等機(jī)的廣告;有助于發(fā)現(xiàn)對(duì)等機(jī)、對(duì)等組、管道和服務(wù)。
    對(duì)等解析器協(xié)議 對(duì)等機(jī)用它來(lái)向另一個(gè)對(duì)等機(jī)發(fā)送搜索查詢以定位對(duì)等機(jī)、對(duì)等組、服務(wù)或管道。
    對(duì)等成員資格協(xié)議 對(duì)等機(jī)用它來(lái)加入或退出一個(gè)對(duì)等組。
    對(duì)等信息協(xié)議 對(duì)等機(jī)用它來(lái)獲得別的對(duì)等機(jī)的狀態(tài)。
    管道綁定協(xié)議 對(duì)等機(jī)用它來(lái)把自己綁定到管道端點(diǎn)。
    端點(diǎn)路由協(xié)議 對(duì)等機(jī)用它來(lái)請(qǐng)求有關(guān)到另一對(duì)等機(jī)的路由信息。

    Jxta 規(guī)范不要求對(duì)等機(jī)實(shí)現(xiàn)上述所有協(xié)議。任一特定的對(duì)等機(jī)只須實(shí)現(xiàn)那些實(shí)際要用到的協(xié)議。

    基于 Jxta 的系統(tǒng)的一些有趣的屬性
    既然您已經(jīng)對(duì) Jxta 平臺(tái)理論上的構(gòu)件有了一個(gè)基本理解,我們就來(lái)討論一下作為 Jxta 設(shè)計(jì)結(jié)果的一些有趣的屬性。

    有“電子心跳”的任何東西都可以成為一個(gè) Jxta 對(duì)等機(jī)
    從理論上說(shuō),有文本字符串生成能力的最簡(jiǎn)設(shè)備都可以加入(雖然并不是在每個(gè) P2P 應(yīng)用中都有必要)到 Jxta 網(wǎng)絡(luò)中。這是怎么成為可能的呢?

    在 P2P 網(wǎng)絡(luò)上,過(guò)分簡(jiǎn)化的設(shè)備需要對(duì)等代理人。這個(gè)代理人可以代表該簡(jiǎn)化設(shè)備(或多個(gè)簡(jiǎn)化設(shè)備)執(zhí)行發(fā)現(xiàn)、廣告和通信。代理人的位置可以被硬性固定在簡(jiǎn)化設(shè)備。這樣,在代理人的幫助下,簡(jiǎn)化設(shè)備就可以成為 Jxta 網(wǎng)絡(luò)上完全合格的對(duì)等機(jī)。例如,一個(gè)被綁在一只海龜身上并以無(wú)線方式發(fā)送出帶有位置信息的 Jxta 消息的 GPS 定位器,就可以成為 Jxta 網(wǎng)絡(luò)上的一個(gè)對(duì)等機(jī)。

    不確定拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)中的順序
    典型 Jxta 網(wǎng)絡(luò)另一個(gè)迷人的方面是它固有的不確定的拓?fù)洌憫?yīng)結(jié)構(gòu)。計(jì)算機(jī)用戶通常都習(xí)慣于本質(zhì)上確定的、同步的計(jì)算機(jī)系統(tǒng),并認(rèn)為這是一種標(biāo)準(zhǔn)結(jié)構(gòu)。例如,當(dāng)我們的瀏覽器發(fā)出 Web 頁(yè)面的 一個(gè) URL 請(qǐng)求時(shí),我們期望輸出立刻就會(huì)出現(xiàn)。我們還期望世界上的每個(gè)人都可以使用同一個(gè) URL 從同一個(gè) Web 服務(wù)器檢索同一個(gè)頁(yè)面。

    在 Jxta 世界里,一個(gè)特定的資源請(qǐng)求不會(huì)在幾分鐘、幾小時(shí)或甚至幾天內(nèi)返回;事實(shí)上,它可能根本就不會(huì)返回。另外,請(qǐng)求同一資源的世界各地的人們很可能得到的是來(lái)自完全不同的服務(wù)器的資源副本。這就引起了一個(gè)問(wèn)題:不確定性系統(tǒng)有什么好處呢?

    來(lái)自 grassroots 軟件革命的靈感
    我們只要看看象 Napster 和 Gnutella 這樣的流行 P2P 系統(tǒng)就可以找到答案。下面是它們的一些額外的優(yōu)勢(shì)特征(它們使同步性和確定性的喪失變得值得):

    • 內(nèi)容的高可用性。 對(duì)等機(jī)可以從多個(gè)服務(wù)器上獲取內(nèi)容,理想情況下可從附近開(kāi)機(jī)運(yùn)行著的一臺(tái)服務(wù)器上獲得。原始源對(duì)等機(jī)不必為每一個(gè)資源請(qǐng)求服務(wù);事實(shí)上,它甚至可以不開(kāi)機(jī)運(yùn)行。

    • 網(wǎng)絡(luò)帶寬的最優(yōu)化使用。 現(xiàn)今 Web 上典型的局部流量集中導(dǎo)致的擁塞不會(huì)影響 P2P 網(wǎng)絡(luò)。

    • 更低的內(nèi)容分發(fā)成本。 P2P 網(wǎng)絡(luò)能吸納內(nèi)容并復(fù)制它以使它易于存取。

    • 來(lái)自網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的計(jì)算能力的均衡。 通過(guò)異步操作,您可以同時(shí)發(fā)出許多資源或服務(wù)請(qǐng)求,然后讓網(wǎng)絡(luò)為您完成這些工作。

    • 無(wú)限的可伸縮性。 一個(gè)設(shè)計(jì)良好的 P2P 應(yīng)用可以在不影響可伸縮性限制的情況下橫越整個(gè)已知的連接著的宇宙;而這在任何集中式模式中是完全不可能的。

    在完美的 Jxta 世界中,我們將在不確定性網(wǎng)絡(luò)上執(zhí)行異步請(qǐng)求。您覺(jué)得這個(gè)概念古怪嗎?

    讓我們用一個(gè)示例來(lái)闡明。設(shè)想一個(gè)在基于 Jxta 的 P2P 網(wǎng)絡(luò)上運(yùn)行的基于網(wǎng)絡(luò)的音樂(lè)請(qǐng)求服務(wù)。對(duì)等機(jī)提交了幾個(gè)對(duì)音樂(lè)文件的請(qǐng)求并在一段時(shí)間后核查對(duì)等組中的音樂(lè)請(qǐng)求服務(wù)是否找到了這些文件。當(dāng)我們?cè)谝欢螘r(shí)間后去核查音樂(lè)請(qǐng)求服務(wù)時(shí),所請(qǐng)求的一些文件已經(jīng)被找到,但其它的卻無(wú)法定位。服務(wù)對(duì)那些文件的響應(yīng)是:音樂(lè)的選擇和可用性在不斷地變化;請(qǐng)稍后重試您的請(qǐng)求。這是一個(gè)可接受的不確定的結(jié)果:雖然服務(wù)未能找到一個(gè)文件,但如果我們稍后再次提交同一個(gè)請(qǐng)求,那個(gè)文件或許就是可用的了,因?yàn)橹鞴芪覀兿胍哪莻€(gè)文件的對(duì)等機(jī)這時(shí)或許在線了。

    當(dāng)放到這樣一個(gè)具體的上下文中的時(shí)候,不確定性網(wǎng)絡(luò)的概念看起來(lái)就不再那么陌生了。事實(shí)上,我們多數(shù)人大概都會(huì)接受并使用這樣一個(gè)音樂(lè)請(qǐng)求服務(wù)。我們中的一些人甚至愿意為這樣的自動(dòng)代理支付一點(diǎn)費(fèi)用,這種代理會(huì)持續(xù)監(jiān)視所選文件的可用性,然后為我們?nèi)?lái)并存儲(chǔ)它們的副本。這是 P2P 計(jì)算的巨大魅力之一:均衡并共享全世界的所有連接著的資源的能力 — 但愿是以有秩序的和文明的方式。

    該講的都講完了,但最先幾個(gè)在商業(yè)上取得突破的 Jxta/P2P 應(yīng)用大概還是會(huì)因把確定性和同步性作為它們的主要特征而引以為豪。這是一個(gè)必要的過(guò)渡,因?yàn)橛脩舻牧?xí)慣和市場(chǎng)取向不會(huì)在一夜之間改變 — 如果沒(méi)有強(qiáng)制原因的話將來(lái)不會(huì)改變。新的 P2P 模型將慢慢地浮現(xiàn),起先可能會(huì)是以混合的形式出現(xiàn)。一個(gè)當(dāng)前示例:基于邊緣傳播(edge-propagation-based)的網(wǎng)絡(luò)高速緩存技術(shù),比如 Akamai,是目前確定性的、集中式的 Web 上的規(guī)范。這些技術(shù)用 P2P 風(fēng)格的概念在集中式服務(wù)器的世界里實(shí)現(xiàn)優(yōu)化的內(nèi)容傳送。

    社會(huì)影響和棘手的知識(shí)產(chǎn)權(quán)問(wèn)題
    我們先前使用的短語(yǔ) — 有秩序的和文明的 — 是前沿計(jì)算和當(dāng)代社會(huì)學(xué)的交匯處。事實(shí)上,短語(yǔ)“有秩序的和文明的”在不同的文化圈里可有不同的解釋,或者甚至在單個(gè)文化圈的不同環(huán)境中也有不同解釋。這已經(jīng)在版權(quán)敏感的知識(shí)產(chǎn)權(quán)(IP)管理的世界里引起了激烈的爭(zhēng)議和辯論。由于有關(guān)集團(tuán)的優(yōu)勢(shì)以及內(nèi)容分發(fā)上根深蒂固的市場(chǎng)慣例,這一爭(zhēng)論不會(huì)很快平息。

    在大眾和商業(yè)新聞中已經(jīng)寫(xiě)了很多。Sun 不在其 Jxta 實(shí)現(xiàn)中規(guī)定策略的決定使得它可以自由地前進(jìn)并掃除了這些爭(zhēng)論 — 把責(zé)任放在了那些在內(nèi)容分發(fā)上率先采用 Jxta 技術(shù)的先鋒們的肩上。然而,在這個(gè)舞臺(tái)上, Jxta 技術(shù)基于社區(qū)的發(fā)展使它有潛力全局控制 IP(知識(shí)產(chǎn)權(quán))所有者和公眾之間的良好平衡。開(kāi)放的 Jxta 社區(qū)可以作為一個(gè)論壇,IP(知識(shí)產(chǎn)權(quán))所有者和技術(shù)專家可在此論壇解決它們之間的分歧。

    透視 Jxta:它如何與 .Net 和 Jini 較量
    自從 Jxta 被介紹后,它已經(jīng)被拿來(lái)和每個(gè)可想象得到的網(wǎng)絡(luò)技術(shù)進(jìn)行比較。即使是有名望的商業(yè)雜志也不經(jīng)意地忽略了這一創(chuàng)新,因?yàn)樗@然不和主要競(jìng)爭(zhēng)對(duì)手大肆宣傳的旗艦產(chǎn)品較量。Jxta 工程是一只獨(dú)一無(wú)二“怪獸” — 在討論它的時(shí)候不會(huì)有任何現(xiàn)成的參照物。因此,必須獨(dú)立地對(duì)它進(jìn)行評(píng)價(jià)。

    要確信,Jxta 基于 XML 的消息傳遞與微軟(Microsoft)的 .Net 和 SOAP 技術(shù)是類似的。但這種比較的基礎(chǔ)比較薄弱。隨著越來(lái)越多的第三方協(xié)議使用了 XML,很顯然只用 XML 作為消息格式對(duì)于實(shí)際的網(wǎng)絡(luò)技術(shù)并不能說(shuō)明什么。把高級(jí)別的、策略豐富的、基礎(chǔ)構(gòu)造基于 Web 服務(wù)的 .Net 與本質(zhì)上低級(jí)別的、基本的、策略中立的 Jxta 相比是件毫無(wú)意義的事。

    Jxta 工程和 Jini 工程也是根本不同的。它們倆在較高級(jí)別的交互作用方面有一些類似的地方,都能夠?qū)崿F(xiàn)網(wǎng)絡(luò)上真正的分布式計(jì)算。然而,類似處也在那里嘎然而止。因?yàn)檎嬲姆植际接?jì)算仍只是未來(lái)的一個(gè)設(shè)想,所以很容易低估 Jxta 和 Jini 工程之間的區(qū)別 — 盡管事實(shí)是我們?cè)诒容^更多已建立的客戶機(jī)/服務(wù)器或多層服務(wù)器技術(shù)的實(shí)現(xiàn)時(shí)不會(huì)做同樣的事。

    兩者在戰(zhàn)略上的明顯不同是:Jxta 在一開(kāi)始就是以完全互操作性技術(shù)(任何平臺(tái),任何編程語(yǔ)言,任何廠商)的面貌出現(xiàn)的。Sun 是唯一投身于該社區(qū)的公司。Jini 是以 Java 為中心的技術(shù),作為一種戰(zhàn)略,Sun 將把它集成并應(yīng)用在將來(lái)提供的產(chǎn)品中。Sun 將對(duì) Jini 的發(fā)展保持一定程度的控制。

    沒(méi)有 Java 平臺(tái)(代碼的靈活性,RMI 等等)的支持,Jini 的實(shí)用性將受到限制;另一方面,Jxta 則完全獨(dú)立于 Java 的裝飾。從另一個(gè)角度看:Sun 僅僅定位在促進(jìn) Jxta 的成長(zhǎng),而 Sun 和 Jini 的成長(zhǎng)之間則是有著較多的利害關(guān)系。隨著時(shí)間的推移,Jini 將成為 Jxta 的“愈發(fā)內(nèi)向的堂兄弟”;它將作為啟用的嵌入技術(shù)被應(yīng)用、部署到許多產(chǎn)品中。Jxta 的命運(yùn),在另一方面,將取決于參與此項(xiàng)技術(shù)的開(kāi)放社區(qū)的成員們的熱情和創(chuàng)造力。

    Jxta 的多功能性
    由于提供基礎(chǔ)機(jī)制而不規(guī)定策略,Jxta 基礎(chǔ)對(duì)于很多 P2P 應(yīng)用都是可用的和有價(jià)值的。下面是另外三個(gè)普通的個(gè)案研究:

    • 對(duì)等機(jī)上的用戶搜索并共享對(duì)等組內(nèi)的文件、信息和內(nèi)容
    • 對(duì)等機(jī)加入到對(duì)等組以使用只在此特定對(duì)等組內(nèi)才可用的特定服務(wù)
    • 對(duì)等組內(nèi)對(duì)等機(jī)間以及通過(guò)網(wǎng)關(guān)穿越對(duì)等組的即時(shí)消息傳遞系統(tǒng)

    當(dāng)然,可能的應(yīng)用是無(wú)窮無(wú)盡的,其中的很多還有待開(kāi)發(fā)或甚至有待構(gòu)思。在后面的文章中,我們將安裝 Jxta 并試驗(yàn)它的命令行 shell,創(chuàng)建該 shell 的定制擴(kuò)展,為 Jxta 網(wǎng)絡(luò)設(shè)計(jì) P2P 應(yīng)用。


    Jxta:名稱中包含什么意義?
    Jxta 不只是以字母 J 開(kāi)頭代表 JavaJini 名稱的、由四個(gè)首字母組成的首字母縮寫(xiě)詞。事實(shí)上,它代表 Juxtapose 工程。 Juxtapose 漂亮而優(yōu)美地描繪了未來(lái)完整的 P2P 計(jì)算世界。據(jù)我們所知,企業(yè)內(nèi)部網(wǎng)(intranet)或因特網(wǎng)(Internet)中現(xiàn)有的客戶機(jī)/服務(wù)器計(jì)算永遠(yuǎn)不會(huì)消失或被取代。相反,Jxta 技術(shù)將作為一種補(bǔ)充,與這些技術(shù)共存(因此是 juxtaposition 并列)并給最終用戶帶來(lái)超值體驗(yàn)。因特網(wǎng)和企業(yè)內(nèi)部網(wǎng)的用戶將能夠從網(wǎng)絡(luò)的這兩種形式中獲益。

    關(guān)于 Jxta 標(biāo)識(shí)符
    從潛力上講,對(duì)等組或許可以跟整個(gè)聯(lián)系著的宇宙一樣大。在這么大的名稱空間中為任何事物進(jìn)行唯一的命名都是一個(gè)挑戰(zhàn)。為了應(yīng)對(duì)這個(gè)問(wèn)題,Jxta 給 Jxta 組件的每個(gè)可設(shè)定地址的實(shí)例都分配了一個(gè)內(nèi)部標(biāo)識(shí)符。這種標(biāo)識(shí)是通過(guò)一個(gè) UUID 進(jìn)行的,UUID 是使用能夠確保在時(shí)間和空間上都有很高概率的唯一性的算法產(chǎn)生的 64 字節(jié)的數(shù)字。Jxta 標(biāo)識(shí)符是 URN(統(tǒng)一資源名稱)格式的,并被嵌入到廣告中供內(nèi)部使用。目前定義了四種標(biāo)識(shí)符類型,用于標(biāo)識(shí)對(duì)等組、對(duì)等機(jī)、管道和代碼/數(shù)據(jù)(code/data)(簡(jiǎn)寫(xiě)為 codat)。

    參考資料

    • 參加本文的討論論壇
    • 官方的 Jxta 社區(qū)位于 Jxta.org。您可在這里找到最新的規(guī)范、文檔、源代碼和二進(jìn)制文件。
    • 如果您對(duì)了解基于 Jini 的技術(shù)的更多詳細(xì)信息有興趣,請(qǐng)查閱 Sing Li 寫(xiě)的 Professional Jini
    • 另一個(gè)早期采納者的對(duì)等工作組已經(jīng)建成。這個(gè)組的戰(zhàn)略會(huì)是什么,它與 Jxta 的關(guān)系又會(huì)是什么,這一點(diǎn)還不清楚。
    • Todd Sundsted 寫(xiě)的 developerWorks 每月專欄 — 對(duì)等計(jì)算的實(shí)際應(yīng)用,提供了關(guān)于 P2P 概念的抽象觀點(diǎn)和用他自己的 P2P 應(yīng)用框架進(jìn)行的實(shí)用的學(xué)習(xí)經(jīng)驗(yàn)。
    • 要了解一個(gè)可與之替換的開(kāi)放源代碼的系統(tǒng),請(qǐng)查看 Freenet 工程。
    • 來(lái)自 IBM 的高級(jí)對(duì)等網(wǎng)絡(luò)(APPN)提供了強(qiáng)伸縮性、高可用性、安全的網(wǎng)絡(luò)解決方案。
    • IBM 的 Magstar 對(duì)等虛擬磁帶服務(wù)器被設(shè)計(jì)用來(lái)提高數(shù)據(jù)的可用性及改善您的災(zāi)難恢復(fù)基礎(chǔ)構(gòu)造。
    • developerWorks Java 技術(shù)專區(qū)查找更多 Java 參考資料。

    posted on 2005-11-16 09:00 樂(lè)樂(lè) 閱讀(114) 評(píng)論(0)  編輯  收藏 所屬分類: JXTA


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    主站蜘蛛池模板: 亚洲欧洲视频在线观看| 亚洲成a人片在线观看精品| 久久精品国产亚洲AV天海翼| 亚洲高清一区二区三区电影| 精品久久久久久久久免费影院| 免费国产小视频在线观看| 亚洲AV色欲色欲WWW| 亚洲三级在线免费观看| 国产免费久久精品| 亚洲黄色在线观看网站| 国产精品亚洲一区二区三区| 99视频精品全部免费观看| 亚洲一区二区三区夜色| 看亚洲a级一级毛片| 亚洲av麻豆aⅴ无码电影| 亚洲电影在线免费观看| 四虎永久在线精品免费网址| 亚洲av纯肉无码精品动漫| 免费在线观看中文字幕| 国产一级婬片A视频免费观看| 亚洲成在人线aⅴ免费毛片| 亚洲精品无码成人| 青青在线久青草免费观看| 亚洲熟妇成人精品一区| 精品香蕉在线观看免费| 亚洲日本一线产区和二线产区对比| 国产小视频免费观看| 成人A毛片免费观看网站| 4480yy私人影院亚洲| 色播在线永久免费视频| 亚洲av无码不卡久久| 1000部拍拍拍18勿入免费视频下载 | 亚洲国产第一页www| 老司机精品免费视频| 亚洲高清不卡视频| 日韩电影免费在线观看视频| 亚洲成电影在线观看青青| 国产精品免费福利久久| 国产亚洲精品美女久久久| 日韩免费一区二区三区在线播放| 国产天堂亚洲国产碰碰|