标签:
浅谈软件架构(四)
—— P2P
----cnyinlinux
本文将讨论一种特殊的软件架构——P2P网络。这与时下正流行的O2O有些神似,不过二者没有联系,也不是同类物种。O2O指的是互联网虚拟世界(Online)与显示世界(Offline)的协作模式。而P2P指的是同处在互联网世界中的两个节点(对等终端)之间的情仇爱恨。因此也有人称之为对等网络。
和今天热炒的“去中心化”有着不可割舍的关系。还有一个神奇的物种与它有着绝对关联关系——比特币。下面我们来研讨下P2P网络的原理。
P2P网络是Peer to Peer的简称,即节点到节点直通网络。处在网络上的节点相互之间直接建立联系,完成网络通信任务。比如生活中普通人都时常能用到的P2P下载器,迅雷下载客户端就是一个典型的P2P的实现。举个例子来理解:假设你现在要在某网站下载一部电影,而你的室友电脑上正好有该资源,且迅雷客户端正在运行,这时候完全不需要下载来自遥远服务器传来的数据,直接从你室友电脑局域网传输过来,即节省了网络资源也缩短了获取资源的时间。换句话说,所有的迅雷客户端共同构成了一个资源下载P2P网络。而迅雷就是P2P软件,也即Peer。如此原理工作的
那么,你的迅雷是怎么知道旁边电脑有资源的呢?这就得从P2P的实现技术说起了。目前的P2P技术已经发展到第4代了,确切说是第3代的升级完善中,真正第4代的全新技术的P2P还没有开发出来。下面我们逐代进行介绍。
第1代,中央控制网络体系结构。
全网络的节点计算机都通过网络与中央控制服务器连接,所有的服务请求均发送给中央服务器,由中央服务器运算查找合适的节点(Peer)来确定P2P连接。拿之前下载的例子来说,你在迅雷客户端请求下载电影的时候,在向电影资源提供站点提交下载请求的同时,也将此信息发送给了迅雷中央服务器。迅雷中央服务器在所有在线的Peer中找出与你距离更近且拥有资源的节点,反馈此信息后你的迅雷客户端与该Peer建立P2P传输通道,这样一来你就可以下载该Peer的数据了。当然不是你要下载的所有资源都被附近的人下载过,所以并非所有下载都能P2P化。在找不到合适的Peer的情况下,还是老老实实从资源提供站点下载吧,不过这之后,你就会成为别人下载同一资源的合适Peer了。
这种方式的P2P模式,好处是网络架设简单,软件设计方便实现,还能更充分的掌握Peer的运行状况和资源分布。对于中央控制器来说,压力较大。需要实时运算不计其数的客户端的请求。响应的速度就会受制于各Peer与中央控制节点间的网络状况,以及中央控制节点的运算能力。所以就有了更为离散化的P2P技术出现。
第2代,分布分散网络体系结构,也即去中心化P2P网络。
近年流行的比特币网络,拒传就是去中心化纯P2P网络。读者可自行查阅相关信息。
http://en.wikipedia.org/wiki/Bitcoin 本文贴出维基百科的解释,敬请参考!
去中心化的P2P网络中,各Peer间的关系就像上图所示,没有中央控制节点,所有节点平等的处于网络中。也被称为“纯P2P网络”。 它没有集中的中央控制服务器,每个Peer随机接入网络,并与自己相邻的一组邻居节点通过端到端连接构成一个逻辑覆盖的网络。对等节点之间的内容查询和内容共享都是直接通过相邻节点广播接力传递,同时每个节点还会记录搜索轨迹,以防止搜索环路(死循环)的产生。纯P2P网络结构解决了网络结构中心化的问题,扩展性和容错性较好。由于没有一个对等节点知道整个网络的结构,网络中的搜索算法以泛洪(广播)的方式进行,控制信息的泛滥消耗了大量带宽并很快造成网络拥塞甚至网络的不稳定,从而导致整个网络的可用性较差,另外这类系统更容易受到垃圾信息甚至是病毒的恶意攻击。于是又有了更为可靠的技术来完善它。
第3代,混合网络模型。也即前两种模式的混合。
混合式网络结构综合了纯P2P去中心化和中央控制式P2P快速查找的优势。按节点能力不同(计算能力、内存大小、连接带宽、网络滞留时间等)区分为普通节点和搜索节点两类。搜索节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于中央控制式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯 P2P的模式将搜索节点相连起来。可以在各个搜索节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的搜索节点信息,并且负责维护整个网络的结构。由于普通节点的文件搜索先在本地所属的簇内进行,只有查询结果不充分的时候,再通过搜索节点之间进行有限的泛洪。这样就极为有效地消除纯P2P结构中使用泛洪算法带来的网络拥塞、搜索迟缓等不利影响。同时,由于每个簇中的搜索节点监控着所有普通节点的行为, 能确保一些恶意的攻击行为能在网络局部得到控制,在一定程度上提高整个网络的负载均衡。
第4代,智能P2P网络。
其实还处在发展中并未完善,不过从技术思想层面看已经超越之前的几代技术了。
大体分为以下3种模式:
(1)动态口选择之一。目前的P2P应用一般使用固定的端口,实际上可引入动态选择传输口,一般说口的数目在 1024~4000之间。甚至P2P流可以用原来用于HTTP(SMTP)的口80(25)来传输以便隐藏。这将使得识别跨运营商网络的P2P流量计算变得更困难。
(2)双向下载。该项技术可以多路并行下载和上载一个文件和/或多路并行下载一个文件的一部分。而目前传统的体系结构要求目标在完全下载后才能开始上载。这将大大加快文件分发速度。
(3)智能结点弹性重叠网络。智能结点弹性重叠网络是系统应用P2P技术来调度已有的IP承载网资源的新技术,在路由器网络层上设置智能结点用各种链路对等连接,构成网络应用层的弹性重叠网。可以在保持互联网分布自治体系结构前提下、改善网络的安全性。智能结点可以在路由器之间交换数据,能够对数据分类(分辩病毒、垃圾邮件)保证安全。通过多个几何上分布的结点观察互联网,共享信息可以了解互联网蠕虫感染范围和性质。提供高性 能、可扩张、位置无关消息选路,以确定最近的本地资源位置。改进内容分发。使用智能结点探测互联网路径踪迹并且送回关于踪迹的数据。解决目前互联网跨自治区路径选择方面存在的问题。减少丢包和时延,快速自动恢复等。
<<本文完结>>
标签:
原文地址:http://my.oschina.net/cnyinlinux/blog/464725