目前P2P正在蓬勃发展,不过其中也有很多问题。本文试图列举目前P2P所碰到的最大几个问题,并分析成因和解决方法,最后提出一种P2P传输方式。
P2P传输目前所碰到的几大问题有,传输数据不可控,及其衍生出的版权控制问题,广告控制问题,病毒控制问题。传输速度和传输持续性的冲突。“吸血”、“限速”和“卡种”。搜索的敏感性和代价。传输过程的保密和安全性。
首先讨论最大的一类问题,传输数据不可控,又称为无障碍特性。所谓传输数据不可控,是指所有通过P2P共享传输的数据都无法被某个人标记和阻止。Http的网页内容很容易被封锁掉,而ED/BT的数据可就封不住了。基于这个特点,很多人都用P2P来下载XXX内容。不过相对来说有利有弊,这同样造成了病毒,色情,暴力的泛滥。而且衍生了另外一个相当巨大的问题,版权问题。
上文可知,单个个体是无法对P2P内容的传输构成干扰的,此处的个体不单单指个人,还包括了企业实体等等。相对的全体则是指所有个体的集合。其实从某种意义上说,上面一句根本就是说,P2P传输内容不受干扰。那么我们可以想见,如果是一般传媒,个人利益受到侵害的时候个人是无力的,企业利益收到侵害的时候企业是财大气粗的。但是P2P这里,企业和个人一样无力了。因此P2P就成了很多企业的眼中钉肉中刺,而保护版权,就是他们最好的理由。其实从某种意义上来说,传统媒体就没有版权的问题吗?P2P传播方式就一定带来版权问题吗?
而更进一步来说,我们面对着自由传播和反自由传播的斗争。前者认为人类的知识财富应当为人类所共有,前人的知识应当能让后人学习。而后者则认为人类的知识应当保密,以便能带给创造知识的人利益。前者为黑客时代的精神核心,目前的开源软件基金即继承了此种思想。其中哪种更好确实难说,没有学习就没有进步,可是没有利益谁去学习呢?
OK,言归正传,当前我们面对着版权保护上的困难。从根本上说,我们应当考虑的是如何才能在新情况下重新分配利益,而不是如何阻拦技术的进步以保护旧有的利益格局。尽力争取将其价值内在体现而不是外在化,更直接的说就是尽力使得公开技术本身就能获得收益,而不是拿去卖钱。例如将内容公开,而且从感兴趣的人中收集潜在客户,或者是在内容中引导宣传等等。此时P2P的无障碍特性不但不是缺陷,反而是优势。
而后,P2P的传输速度和传输持续性的矛盾。其实严格来说这并不是矛盾,P2P越热,传输速度就越快。但是一个东西的热度总是有限的,因此就P2P应当牺牲持续提供下载的能力来保持传输速度,还是牺牲传输速度来保证持续下载的能力。P2P分成了两类,ED阵营和BT阵营。本质上说没有什么问题,要保证又有持续下载性又有速度是很困难的。因此这个问题是一个内在的矛盾。
再而后,“吸血”、“限速”和“卡种”的问题,这也是P2P最为内在和难以解决的一个问题。所谓吸血,是ED术语。指仅仅从别人那里下载,而不为别人提供上传的人。在BT中就是减小上传,下了就跑。限速是P2P术语,指限制上传和下载速度。卡种则是BT术语。指当上传到99.9%的时候停止发布,使得大量的人维持在99.9%无法完成下载的方法。实践证明短期的卡种可以“强迫”下了就跑的人持续“做种”上传,使得整体速度提升。但是时间长一点就会打击某些下载积极分子的积极性,导致跑种,浪费带宽。在ED中,使用收益上传者来解决此类问题。
本质上,这个问题是源于P2P的核心思想的。P2P认为,我为人人,人人为我。但是有人的带宽要收费,有人懒得为别人做贡献,怎么办?于是吸血骡等等软件和方法就应运而生。下载的时候凶猛,上传的时候不给。于是整体的速度就被吸血骡拖慢了,所有人的下载也越来越困难。为了对应吸血骡和下了就跑的人,人们开发了收益上传者系统和卡种方法,不过都是治标不治本。技术无论如何进步,都解决不了人自身的贪婪。
至于限速,则是一个两说的话题,有人认为限速拖慢了整体网速,有人认为限速无妨。其实应当这么说,如果一个人限速的时候同时限制了上传和下载速度,那么无所谓。如果上传限速一点点,下载限速非常高,或者根本不限速。那么只能说RPWT了。
搜索的敏感性和代价,这个问题不是一个完整的P2P上的问题。可以说,这个问题牵涉了互联网的本质,即信息的收集和获得。作为P2P来说,在信息的敏感性和代价上具有特殊的特点。
最简单情况下,数据被集中到核心服务器上,搜索者驱动核心服务器来做搜索。当数据量增大后,核心服务器就无法支撑了。于是这时候出现了集群服务器,即以一组服务器替代一个服务器。按照读写发生的频率,又可以分为多对等服务器和多分离服务器两大类型。多对等服务器将每个服务器视为具备相同的数据,查询操作可以在和单服务器同等的时间内完成,但是更新和修改操作就必须花费原来时间的N倍,同时数据存储成本是单服务器的N倍。而多分离服务器则认为每个服务器负担一部分数据,更新和修改操作的时间比单服务器略长,模糊查询操作则需要付出原先N倍的代价,数据存储成本则和单服务器一致。前者可以看做是RAID0的变形,后者则是RAID1的变形。当前主流产品都具有多负载冗余的能力,基本就是RAID5的变形。
在更复杂的情况下,例如互联网的数据索引,当前的服务器根本无法支撑。于是就产生一个基础想法,分布式数据库。分布式数据库又可以称为网格数据库。和分布式数据库本质的区别在于,无协调状况下可以自适应的分布数据,并且完成数据的冗余工作。简单来说,理想状态下一个机器加入或者离开网格的影响只体现在性能上。
听上去很好,不过实际还有很多问题。例如ED中使用的Kadimila协议就是一种分布数据库系统,具体请看前面的一篇文章。Kadimila的最大弱点在于无法模糊搜索。通俗的说,一般搜索引擎,“国家体制”搜索的出的东西,“国家”的搜索结果中一定也有。虽然不一定靠前,能让你一次看到。然而,Kadimila协议中,“国家体制”搜索的出的东西,“国家”基本就出不来了。这是因为需要通过关键字来计算HashNum,然后查找索引了数据的计算机。关键字变了,索引也变了,因此结果就不一样了。
这是一个关键而难解决的问题,问题的关键则在于“必须根据关键字做出索引”上。如果没有关键字索引和根据索引查找机器,那么查询就会在所有机器上实行。从而带来非常大的开销。而通过关键字索引的话,目前没有一种算法能够获得一个上下文所有的关键字。因此我们只能将内容和可能最大的几个关键字关联,最终导致搜索不全。
最后就是传输过程的保密性和安全性,这是一个密码学上的双重意义的概念。保密就是传输的内容不会为第三者所知道,安全性则是传输的内容不会为第三者篡改。当然,在这里还要加入一个不会为第三者阻拦。
P2P的客户端大部分数据都来自其他客户端,由此,其他客户端可以巧妙的构造传输内容,使得客户
Tag Archives: p2p
P2P和DHT的结构
分布式软件构架的变革
我们现在流行的一种模式是使用网页界面的B/S模式,诚然,这种模式比C/S模式有更大的优点。客户端与系统无关,这样客户端的可复用性非常好。但是这种模式的缺点也是明显的。网络传输效率低(这个现在没有多少人计较了),构架不合理(人家HTTP本来是传输文件的说),而且不安全。
我们相信将来的软件设计模式是基于分布的,那么可能如何分布呢?我个人认为有两种主要模式,一种是平台抽象式分布,一种是组件抽象式分布。
平台抽象式分布是指软件的运行在一个网络平台上,其具体运行在哪个电脑上,如何协调对象,并不是软件关心的内容。平台负责抽象了机器,平衡了性能,增加了效率,但是对于机器间的传输实时性要求比较高。适用于企业内部的发展方向,以多台电脑平衡性能。均衡性能需求峰值,降低硬件成本,并且可以充分利用旧机器。用于这种分布的基础是分布式操作系统,在系统运行后即无条件陷入分布系统的接管中。前台的模拟为纯终端,后台模拟为纯资源。然后终端向资源登陆。这种模式的近似产品是win2k中的AD,不过AD只提供了资源的访问指向和访问控制,还有权限分散管理模型。而没有提供最核心的内存共享和锁定,还有线程分布和游离运行。
组件抽象式的分布其核心是将一个软件分离到不同的组件中,不同的组件在不同的机器上运行。这种模型更适合于自由的广域环境,当然前提是能成功解决组件通讯的问题。现在这种模型相对前种有更广的发展。这种模型和现在的B/S模式中最大的差异是,B/S模式的用户接口是浏览器和服务器程序共同完成的。从来没有人听说过有页面直接驱动后台组件的吧。如果我们可以用一种抽离语言(JAVA的显示效率太低了)来完成前台的接口部分模块,那么我们应该试图用这种方式来发布软件的前台端。这样软件的抽象更为简单明确,而且可复用性更高。
Bittorrent
关于纯粹的BT技术,并没有啥好说的。BT的迅猛发展表明了这个技术的生命力。不过BT还要面对几个问题。首先,也是最大的一个,就是Copyright的问题。
嗯,先回顾下网络文件发布的方式和版权追究的历史。最开始的互联网是bbs形式的,而且比firebird一类的telnet形式还要落后。这种情况下要么是通过bbs交换文件,要么就是ftp。多数是大学在用,很少有追究版权的,而且多数东西用于研究时可以藐视版权法。所以这个时期根本没有所谓版权的问题。
然后就是欧洲某个研究所(似乎是欧洲核物理研究所)搞出的html协议,到今天成为了xml协议的基础。这个协议可以在客户端灵活的使用各种媒体对象表示,而不用管对方是啥系统。今天的xml可以保存和创建各种内存对象也不用管是啥系统,从某个意义上说,这是一脉相承的重大进步……呃,好像扯远了。这个时候出现的各种文档基本都是本人发布或者转载,多数也是大学使用,没有版权问题。
后来我们的网络渐渐转向民用,这个时候微软也搅合了进来,发布了IE。然后很多网站就搞了个人主页服务。还有部分小型网站根本就是大流量的个人主页。为了吸引访问量,经常东抄抄西搬搬。这个时候就有了盗版的概念,不过盗版的多数是文字,也经过修改。这个时期的后期渐渐演变成了盗版歌曲,Mp3格式之争由此而来,相信大家非常熟悉了。
网页毕竟比较好处理,盗版的人虽然多,不过稍成气候就可以一个警告让ISP关闭服务。唱片公司们虽然头痛还比较好处理。(当然,他们可能认为这已经是比较严重的问题了。但是和后来的境况相比,他们的却还没有见到啥大场面。)而后出现了分布式的歌曲共享系统和搜索引擎,这让各个公司大大的头痛了。两者的结合使得免费的歌曲在网络上满天飞,整个唱片行业据说损失惨重。唱片公司们为此甚至将歌曲共享先锋的Netisper(貌似这个名字,偶忘记了)告倒了。不过倒了一个人,起来千万个。反正目前来说,唱片公司已经放弃封杀所有免费歌曲流行的可能。改成授权下载了。用非常低廉的价格销售所谓“授权正版Copy”。老实说对于这个我非常的佩服,不但宣传了自己,减少了盗版损失。对于我们来说,合理合法,支持了自己喜欢的歌手,而且还方便查找。这手算是诸公司们非常成功的举措。
然后就是近代,Edonkey和Bittorrent为代表的两种DFS横空出世(其实ED是个老家伙了)。满世界乱飞的盗版根本没法解决,而且盗版的范畴从主要是音乐和文字扩展到了各个领域。从游戏到电影,啥都有。甚至严重的打击了盗版商,将中国多年未竟的反盗版销售的事业推向了顶点。一个卖盗版的朋友是这么评价的:“以后我们只卖三种软件光盘,系统,office,大众软件”。我今年的所有电视和电影都是从网络上下载的。由此可见我们的盗版正式进入了战国时代。
为盗版而生想必不是P2P软件的本意,不过去除盗版后P2P恐怕没啥明天可言。不信你可以上bt.btchina.net数数到底多少共享是有授权的,包括shareware,XXX授课录像Live这种就算授权过好了。照样是盗版比非盗版多。但是P2P极大的刺激了网络的发展,并且可能成为将来的一个核心技术。
当然我相信,立个法禁止P2P软件简单。但是,这是倒退,而不是进步。P2P软件现在逐渐分布化,BT可以自我组件平台,并且透网络运行,凡可上网处皆可BT。如此优良的技术弃而不用,岂非倒行逆施?但是相对,BT也无法参照歌曲运营的模式来个网络授权正版。如此一来,BT被告上法庭的机会就非常高。要是真的禁止了BT,相信会有新的共享软件应需求而生,状况非但没有好转,反而恶化。绝对不是立法禁了就解决的了的。
目前来说,寻求一种共享中盈利的模式是当务之急。不但是各个损失惨重的公司,而且是众多的BTFans。如果公司倒了,我们还能BT啥呢?
另外一个就是BT的共享方式。BT的算法仅仅可以用于静态文件,这点另我非常不齿。目前最需要分布运行的多数都是动态数据,例如电视广播,股票数据等等。BT不可以用于动态数据的原因我比较清楚,因为我曾经就算法设计问过运筹的老师。不过有分流比没有分流好,仔细看看当今诸多股票提供上捉襟见肘的状况就可以知道了。如果BT2.0协议提供包括动态数据流和认证下载,网络穿越在内的一系列能力,相信会非常具备竞争力的。这个我早在一年前就考虑过,不过奇怪的是,我预计一年可以实现,现在都快一年半了……根本没有声音。