软件架构杂谈(四) --- P2P

浅谈软件架构(四)

—— 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承载网资源的新技术,在路由器网络层上设置智能结点用各种链路对等连接,构成网络应用层的弹性重叠网。可以在保持互联网分布自治体系结构前提下、改善网络的安全性。智能结点可以在路由器之间交换数据,能够对数据分类(分辩病毒、垃圾邮件)保证安全。通过多个几何上分布的结点观察互联网,共享信息可以了解互联网蠕虫感染范围和性质。提供高性 能、可扩张、位置无关消息选路,以确定最近的本地资源位置。改进内容分发。使用智能结点探测互联网路径踪迹并且送回关于踪迹的数据。解决目前互联网跨自治区路径选择方面存在的问题。减少丢包和时延,快速自动恢复等。

<<本文完结>>

时间: 2024-08-06 02:36:05

软件架构杂谈(四) --- P2P的相关文章

软件架构杂谈(一)

浅谈软件架构(一) 这个世界上,被人们创造出来的软件架构大概已经有几百种之多了.当然,它们所处的层次,以及应用范围是不同的.本文讨论的是,工作在协议顶层--即应用层,且是机器间联网工作的软件架构.(由于内容荣杂,本文将分多个期次介绍,请读者关注后续博文) 开篇 行文将讨论的软件架构为以下7类: 1. C/S 2. B/S 3. Cluster (HA) 4. Cloud 5. Distributed 6. APNS-like 7. P2P 一,C/S架构. 这个词汇可谓老生常谈了.自高级语言编程

软件架构杂谈(二) --- Cluster (HA)

浅谈软件架构(二) cnyinlinux 之前发布过的博文,已经对C/S和B/S作了讨论,本文将讨论的是集群-Cluster. 1. C/S 2. B/S 3. Cluster (HA) 4. Cloud 5. Distributed 6. APNS-like 7. P2P 集群的技术是近年来计算机应用大规模普及,以及性能要求逐渐提高的形势下提出来的.简而言之,集群就是一批独立计算机联合运作处理某一高要求任务的技术.其建立在网络互连的基础上,核心是节点间任务分配--调度算法. 集群有几个显著特点

软件架构杂谈(三) --- APNS

浅谈软件架构(三) -- APNS ----cnyinlinux 本文将讨论的是常见软件架构中的三角关系--APNS. APNS是Apple Push Notification Service的简称,即苹果推送通知服务.它用在当前很火热的苹果手机系统中.当然,它不是在手机iOS上运行的一个软件,而是牵扯普通APP应用商和苹果官方服务以及iPhone三方的软件架构.故而我把它称为三角关系. 这是一种新的架构,或者说模式,它并非传统的节点-服务器模式.目前微软的WP系统也采用此种工作模式.它的目标是

《跨界杂谈》企业商业模式(四):弹性

2015-03-20 雷震子 雷震子 wxfrom=5" > 企业的"弹性"涉及几个方面:组织弹性.生产能力弹性.产品弹性等. 组织弹性 我们常常把企业裁员作为企业的负面新闻来报道,而把企业扩招作为正面新闻来传播. 前段时间传出IBM裁员26%的消息,后来证明是假新闻,当时看到IBM的发言人这样讲了非常多数字,并强调公司尽管在裁员(实际是数千人).但同一时候招聘的人很多其它,实际上这是该公司的转型.对于企业而言,针对瞬息万变的市场,对组织进行适应性调整,是稀松寻常的事情

P2P理财项目四个月开发总结

目前项目情况 这个项目从元旦开始开发到现在已经有四个多月的时间了,上线期限也是一拖再拖,从整个项目开发情况来看造成项目延期的原因有很多,简单分析和总结一下这个项目的优缺点,以及在这个项目中的成长. 项目进展分析 需求方面 需求变动在原因里面占用20%,通过个人感觉这个项目需求变动造成的时间浪费在20%左右,一般项目在代码写了一部分后基本上需求是不会再变了,可是这个项目再开发了两个月之后,需求又大变了一次,导致很多代码重新开发或者从新编译,开发重复劳动情绪也收到影响,当然项目慢也不能完全推给需求,

linux杂谈(十四):ftp的企业应用级的配置(一)

1.ftp简介 (1)生活中的ftp 在互联网中我们需要传输数据,尤其是要传输大型数据.有一个服务是要着重去介绍的:ftp.其实我们以前很早就接触它了.只是大家可能不怎么关注,迅雷的基本模型就是ftp,不过是要高级的多. 事实上ftp应该是一种传输协议,之前它采用的是明文传输,如果在复杂的网络环境这样使用的话是非常危险的.为了更安全的使用这个协议,现在我们要采取更安全的软件vsftpd来提供服务. (2)ftp的功能介绍 1.它有着不同等级的用户身份:服务器本地用户:访客:匿名用户: 2.命令记

《跨界杂谈》华为印象之混搭(四)运动者服饰

本章节讨论华为的人员流动.文章标题也作了调整. 上一篇文章重点讲了之字形发展路线,这是从员工个人发展角度讲的.这两个话题有部分重合,只是侧重点不同. 运动 先臭拽一句哲言:"宇宙万物都是处于运动之中的".包括植物在内的所有生物都是会动的,差异只是我们是否观察到而已.运动与静止都是相对的,无所谓好坏之说,本文讲的是运动部分. 运动者的搭配 运动衫穿在爱运动的人身上才更显活力,也就是更搭配.当然,不爱运动的人,穿运动衫,也会起到增强活力印象的效果.运动衫的选择与从事运动的本身强相关,特别是

架构杂谈《四》

架构杂谈<四> 分布式一致性协议 一.引言 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些个副本会放在不同的物理机上,为了对用户提供正确的数据,我们需要保证这些放在不同物理机上的副本是一致的.为了解决这种分布式一致性问题,提出了很多经典的协议和算法,比较著名的是 两阶段提交协议和三阶段提交协议. 二.两阶段提交协议 两阶段提交协议把分布式事务分为两个阶段,一个是准备阶段,一个是提交阶段.准备阶段和提交阶段都是由事务管理器发起的,两阶段提交协议的流程如下:

【EJB四】——JMS消息服务之P2P和Pub/Sub

JMS:java消息服务,JMS客户端可以通过JMS服务进行异步消息传输.可以支持两种模型:P2P和Pub/Sub P2P 点对点消息传输模式,这种模式主要包括发送者,消息队列和接收者 特点: 1.每个消息只有一个消费者,一旦被接收(消费),此消息就不存在于消息队列中了. 2.发送者和接收者在时间上没有依赖性(当消息发送后,无论接收者有没有在接收,都不会影响消息进入消息队列) 3.接收者在成功接收消息之后,需要向队列应答成功. Pub/Sub 发布/订阅的模式.主要包括:发布者,主题,订阅者三部