国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 分布式系统阅读笔记(十)-----P2P对等网络系统

分布式系统阅读笔记(十)-----P2P对等网络系统

来源:程序员人生   发布时间:2015-01-09 08:59:01 阅读次数:3669次

1、介绍

P2P系统全称是peer-To-peer System,就是对等系统的意思。他的出现使得资源可以在所有的节点间进行数据的同享了,条件是只要他是连上网络的。在P2P系统中,所有的资源和数据对象都散布于各个节点中。

1、P2P系统可以用在1些散布式的利用和服务当中。

2、在P2P中1个好的资源寄存算法就显得非常重要。

3、正是由于上面的第2条缘由,出现了P2P的中间件,目的就是为了location定位资源对象或是副本容错的处理,每一个资源以GUID的情势来区分标辨认。

2、例子:Napster

1个典型的P2P的例子叫Napster?他是甚么东西呢,百度百科上的解释为:Napster是1款可以在网络中下载自己想要的MP3文件的软件。它同时能够让自己的机器同样成为1台服务器,为其它用户提供下载。简单的1句话就是可以进行音乐文件同享的系统。Napster采取的是中心索引的方式,用户要想查找资源,首先要到索引服务器上去找资源的索引,然后再根据索引去目的节点上download资源,索引服务器本身是不寄存资源的。因此这里就会存在索引服务器单点瓶颈的问题。在Napster和P2P系统中都会有的1个问题就是版本问题,由于数据时完全同享的。

3、P2P中间件

1、P2P中间件1个核心的功能就是提供了1个让客户端能够更快的访问到资源的层次。在Napster中是包括了1个文件的索引的方式。

2、固然,P2P应当还需要做到下面的1些要求:1、全局的扩大性。2、负载均衡性。3、能够与邻居进行交换。4、能够控制节点的增加和离开。

4、路由覆盖层

1、在P2P系统中,路由覆盖层是被作为1个散布式的算法来进行节点和数据对象的定位。

2、每一个对象会有属于他自己的GUID。

3、路由层也会做1些其他的操作:1、添加1个对象。2、或说是删除1个对象。

5、覆盖层的例子:Pastry,Tapestry

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的缺点是太过复杂。

6、覆盖层的利用例子:Squirrel,OceanStore,Ivy

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

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生