熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

對等點如何彼此定位實現交互功能

2013-11-15 09:47:59  來源: JSP教程 

  要完成有用的工作PP 應用程序中的對等點必須能夠彼此發現對方和與對方交互軟件開發人員 Todd Sundsted 在本文中繼續研究 PP 計算並描述了幾種完成這一任務(稱為發現(discovery))的方法以及每種方法的優勢和弱點
  
  對等應用程序是一種大規模但又是細粒度的應用程序每個對等點都可以進入或退出 — 每個對等點都關注於自己的任務在他們短暫的活動期間嘗試完成布置給它們的任務這些任務中的大多數都要涉及與其它對等點交互
  
  管理體系結構(對等點在這種體系結構下運作)必須為構成完整 PP 應用程序的對等點提供許多必要的服務在我們的 PP 計算旅程已經講述了通信和安全性服務(請參閱參考資料)現在是時候來研究對等點發現服務了
  
  對等點發現服務使 PP 應用程序中的對等點能夠彼此定位以便相互之間可以交互實現對等點發現服務有多種方法我們先從告訴對等點彼此之間的存在這種最簡單的方法開始顯式點到點配置
  
  顯式點到點配置
  顯式點到點配置與其說是一種真正的發現機制還不如說是一種用來避免實現發現的機制每個存在的對等點都知道居住在其 PP 世界中的其它對等點
  
  術語點到點(pointtopoint)意味著在 PP 應用程序中的每個對等點都知道需要不斷與之交互的每個對等點並與之相連這種連線不必將每個對等點都連起來 — 將每個對等點和其他各個對等點彼此相連是不太可能的 — 但是不這樣做(無論是有意與否)將會使某些對等點產生網絡盲點
  
  我為本系列文章所構建的簡單的 PP 應用程序(請參閱參考資料)使用顯式點到點配置每個對等點必須預先配置其它所有對等點的地址如果您已經下載並使用了那些代碼則您無疑已經經歷了忍受這一需求所帶來的挫折 — 配置既單調乏味又容易出錯更不用提一般的麻煩了
  
  一般而言分布式應用程序中節點的顯式點到點配置不能很好地擴展到具有較多節點的大型網絡那就是為什麼分布式計算應用程序和技術總是(也有一些顯著的例外)包含命名和定位功能這也解釋了為什麼域名系統(DNS) — 一種分布式命名系統最終取代了用於機器命名的主機文件(hosts file)機制維護主機文件是單調乏味容易出錯的並且一般來說很難在大型網絡環境下運轉
  
  但是顯式點到點配置並非一無是處點到點尋址缺乏靈活性的特性也帶來了一定程度的安全性通過對網絡中的每個對等點預先設置它所知道並且將要與之交互的對等點列表使得網絡在外部攻擊面前表現得很穩固
  
  動態發現模型
  與顯式點到點配置方法的靜態特性截然相反目錄服務和網絡模型具有動態特性這些模型通常能更好地符合 PP 應用程序它們傾向於該領域中動態的一邊
  
  在下面幾節中我們將研究三種不同的機制對等點通過這些機制動態地定位其它對等點和了解它自身所屬的環境
  
  目錄服務模型
  在目錄服務模型中一台或多台有特殊用途的服務器為對等點提供目錄服務為了使可擴展性最大化對應用程序進行了結構化設計以便少量的目錄就可以為數量眾多的對等點服務對等點向目錄服務注冊關於自身的信息(其名稱地址資源和元數據)並通過根據目錄服務器中信息的查詢使用目錄服務來定位其它對等點
  
  圖 說明了一個使用目錄來向對等點提供位置和命名服務的 PP 體系結構目錄本身可以是對等點(盡管是很龐大的對等點)或者可以只擔當目錄而不作它用
  
  圖 目錄服務模型
  
 

  目錄有兩種類型這兩種類型因為其目錄集中式管理的程度不同而有略微的差別
  
  PP 領域中目錄模型的最佳示例是 Napster 和與 Napster 幾乎一模一樣的 OpenNap在 Napster 模型中采用集中式管理目錄雖然采用集中式管理的目錄遭到本質上是非 PP的指責並且事實上促使了 Napster 被棄用但它確實提供了一個重要的優勢集中式管理使它容易確保服務器硬件和配置能足以達到服務質量目標
  
  如果我們先暫時將 PP 放一放可以發現 DNS 是分散式目錄的一個優秀示例與因特網本身相似DNS 設計為甚至在部分網絡受到嚴重破壞的情況下仍能工作DNS 目錄采用層次化結構根目錄代表頂級域(譬如com它將子域查詢服務(如這樣的域)的任務委派到下一層次的 DNS 服務器
  
  在任意一種情況下只有目錄位置必須配置到每個對等點中這對於點到點模型有重要優勢為加入到 PP對等點將自己注冊到集中目錄服務器回憶上面的圖當對等點 A 希望與一個它不知道位置的對等點交互時對等點 A 向目錄服務器發送請求然後目錄服務器向 A 返回那個對等點的位置
  
  網絡模型
  圖 說明了另一種 PP 應用程序它由許多對等點組成這些對等點在功能上很類似沒有專門的目錄服務器對等點必須使用它們所在的網絡來定位其它對等點
  
  圖 網絡模型
  

  正如名稱所暗示的網絡模型 PP 應用程序由一些(通常是動態的)對等點組成沒有一個對等點知道整個網絡的結構或者組成網絡的每個對等點的身份相反對等點只知道直接與它們通信的對等點 — 它們通過代理參與到大型網絡中
  
  對等點必須合作完成任務在許多環境中這種合作包括支持分布式查詢分布式消息傳遞甚至包括認證和授權行為因為涉及通信量的多少象文件傳輸這樣需要大流量的網絡操作通常在對等點間直接發生 — 而不是通過對等點的網絡
  
  思考上面圖 中的網絡當對等點 A 希望知道網絡中另一個對等點的位置時它就發出一個查詢請求並傳遞給鄰居這些鄰居嘗試滿足這個請求如果這些鄰居不能完全滿足這個請求就將請求傳遞給它們的鄰居以此類推
  
  要加入網絡一個對等點要找到願意接受它為鄰居的另一個對等點但是當對等點本身還不是網絡的一部分時它如何找到網絡中的另一個對等點呢?
  
  一個可能的解決方案是向這個對等點提供一個對等點列表讓其檢查對等點設法聯系列表上的對等點直到一個或多個對等點接受它為鄰居這個解決方案聽起來很象點到點模型是不是?正如最初 Gnutella 用戶所證明的那樣這個解決方案只是一定程度上有效因為 PP 網絡(尤其是 Gnutella)動態性很強任何靜態列表都不太可能長期有效
  
  進一步研究 Gnutella 這種環境中的解決方案是很有趣的Gnutella 實現首先將這樣開始當其它對等點通過網絡傳播發送請求時Gnutella 捕獲並持久地存儲這些對等點的位置當這些客戶機關閉後又重新啟動時它試圖連接每個先前標識的對等點直到找到一個或多個仍在運行
  
  這種方法雖然自動化程度很高但是脆弱而且低效後來通過添加對從中央緩存下載活動對等點的列表的支持(請參閱參考資料以獲得示例)改進了這種模式下的客戶機
  
  這種模型的一個有趣的方面是在支持對等點發現的過程中組成網絡的對等點擔任了非常活躍的角色正如我們即將看到的活動對等點的參與並不是必要條件
  
  多播(multicast)模型
  除了網絡中的節點不必協助發現以外多播模型和網絡模型很相似這種模型利用網絡自身提供的特性來定位和確認對等點和資源這種技術的實現(Sun Microsystems 的 Project Jxta 是一個極佳的示例有關 Jxta的更多信息請參閱參考資料)使用 IP 多播來實現查詢
  
  不象單播(unicast) IP 數據報 — 一台主機最多只能向一台主機發送數據報多播 IP 數據報可以同時發往多台主機更重要的是發送方不必知道有多少接收方存在或者究竟有沒有接收方存在發送主機只是封裝消息並將它發布到網絡上所有調整到適當頻道(特殊 IP 地址和端口號的組合)的客戶機將接收到該消息的一個副本
  
  使用 IP 多播技術的發現通過讓對等點用多播定期宣布自己的存在來工作該消息包含對等點的 TCP/IP 主機名和端口號對此消息感興趣的對等點檢測這個消息後抽取出主機名和端口號並使用這個信息與新對等點建立正常的 TCP/IP 連接
  
  這就是多播是如何在單個子網上工作的眾多子網(組成整個網絡)間的路由多播通信是完全不同的並且是一個非常復雜的課題這也是基於 IP 多播的發現的主要局限沒有路由器的支持基於 IP 多播的發現被局限在同一子網上的對等點之間不幸的是因特網對多播並不友好通常因特網(或大型內部網)上的發現由跨網絡邊界的特殊對等點將消息復制到另一個網絡中來實現
  
  結束語
  PP 應用程序的對等點發現是一個有趣的話題下個月我們將研究使用 IP 多播來查找活動對等點的對等點發現的實現這個簡單 PP 應用程序代碼的附加部分將消除一個最大的問題 — 對等點的點到點配置
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19131.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.