P2P系統全稱是peer-To-peer System,就是對等系統的意思。他的出現使得資源可以在所有的節點間進行數據的同享了,條件是只要他是連上網絡的。在P2P系統中,所有的資源和數據對象都散布于各個節點中。
1、P2P系統可以用在1些散布式的利用和服務當中。
2、在P2P中1個好的資源寄存算法就顯得非常重要。
3、正是由于上面的第2條緣由,出現了P2P的中間件,目的就是為了location定位資源對象或是副本容錯的處理,每一個資源以GUID的情勢來區分標辨認。
1個典型的P2P的例子叫Napster?他是甚么東西呢,百度百科上的解釋為:Napster是1款可以在網絡中下載自己想要的MP3文件的軟件。它同時能夠讓自己的機器同樣成為1臺服務器,為其它用戶提供下載。簡單的1句話就是可以進行音樂文件同享的系統。Napster采取的是中心索引的方式,用戶要想查找資源,首先要到索引服務器上去找資源的索引,然后再根據索引去目的節點上download資源,索引服務器本身是不寄存資源的。因此這里就會存在索引服務器單點瓶頸的問題。在Napster和P2P系統中都會有的1個問題就是版本問題,由于數據時完全同享的。
1、P2P中間件1個核心的功能就是提供了1個讓客戶端能夠更快的訪問到資源的層次。在Napster中是包括了1個文件的索引的方式。
2、固然,P2P應當還需要做到下面的1些要求:1、全局的擴大性。2、負載均衡性。3、能夠與鄰居進行交換。4、能夠控制節點的增加和離開。
1、在P2P系統中,路由覆蓋層是被作為1個散布式的算法來進行節點和數據對象的定位。
2、每一個對象會有屬于他自己的GUID。
3、路由層也會做1些其他的操作:1、添加1個對象。2、或說是刪除1個對象。
1、Pastry是P2P的4大路由算法之1,主要是做消息路由的。Tapestry是用來做數據的海量存儲的。
2、一樣的,Pastry會為每一個節點分配1個128位的GUID,這個ID是通過安全哈希算法,就是SHA算法計算所得。
3、Pastry提供了1種找到最近鄰的算法:通過發送信息測算1個round-trip delay延時的方式,比時間哪一個最短,哪一個最短的,距離最近。
4、Pastry的容錯機制是也是通過周期性發送heartBeat的方式進行毛病監聽的。
5、Tapestry也是基于GUID進行消息的路由的。
6、在這里提到了1個無結構的P2P系統,之前說的都是由結構的P2P系統,無結構的優點在于他是純自己管理自己的,結構簡單,但是沒法保證對象的可達性,對象的查找就是純潔的找鄰居的方式,然后通過neighbor找neighbor的neighbor。有結構的P2P的缺點是太過復雜。
Routing overlay層的原理有被用來做了非常多的利用,比如基于Pastry的Web Cache服務的Squirrel,還有后面的OceanStore,Ivy。
1、這里的資源1般寄存在2個地方,1個叫Original Server,原服務器中,1個叫Proxy Server,代理服務器,也就是寄存Cache的地方,只有當Proxy Server沒喲被命中緩存的使用,會想Original Server去加載,在返回要求者。
2、OceanStore項目是因特網上基于P2P結構的散布存儲利用,他采取了1種寫時復制的策略,進行文件的更新,所以上面會有非常多的版本的文件。
3、Ivy是1個可讀寫的P2P文件系統,里面有1個特殊的服務就是log日志服務,只要進行了文件的寫操作,就是記錄像應的日志,因此也就能夠利用日志進行數據的恢復。
4、Ivy進行更新操作所用的策略是:close-to-opne,就是更新操作只在文件關閉了的條件上進行,這個時候就沒有process在使用了。
參考文獻:<<Distributed
Sysytems Concepts And Design>>原版第5版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair