互联网系统的计算模式正从client/server模式向peer-to-peer模式的转变。Peer-to-peer模式(对等计算,亦简称P2P)的核心思想是:所有参与系统的结点(指互连网上的某个计算机)处于完全对等的地位,没有client和server之分,也可以说每个结点即是client,也是server,即向别人提供服务,也从别人那里享受服务。
实际上,对等计算的概念在很早以前就已提出,但一直没有受到广泛的重视,主要因为没有实际运行的系统作为背景,产业界和研究界都普遍认为在大多数情况下还是client/server模式更为合理。
然而,随着PC技术和Internet的发展,个人电脑的能力越来越强,接入带宽也逐渐增加,如何更好的利用所有结点(尤其是原先处于client地位的结点)搭建更好的分布式系统自然而然地成为人们关注的问题。
1999年,Napster推出后迅速普及,成为对等计算的重要实例。从此以后,越来越多的P2P软件的发布和流行一步步验证了对等计算思想的成功,如Gnutella、Freenet、KaZaA、BitTorrent、Skype等。
今天,P2P应用已经超过WEB应用成为占用Internet带宽最多的应用,其代表应用KaZaA的同时在线用户已达到三百万,发展之势愈演愈烈,成为业界持续关注与探讨的话题。
在对等计算在产业界迅速普及的同时,研究界也及时跟进,对P2P系统的设计方法和发展方向进行了广泛而深入的研究。今天,对等计算仍是分布式计算领域关注的焦点,受到该领域所有重要国际会议的重视。
2001年提出的结构化覆盖网(structured overlay network)及分布式哈希表(distributed hash table,DHT)更是引发了P2P研究的热潮,在此基础上提出了各种大规模分布式系统,包括存储系统、DNS系统、在线游戏、网页缓存、新闻组等等。同时,对于如何增强P2P系统的各种性质也有深入的研究,包括安全性、隐私性、公平性、可扩展性、系统开销、访问性能等等。
从理论上说,要完成P2P的计算模式,必须完成三项工作:资源放置、资源定位、资源获取。在P2P系统中,并非个人资源(比如数据)都放置在各自的机器上,很可能是所有机器共同管理资源,比如在P2P存储系统中经常采用分布式哈希表放置数据,各人数据可能放置在他人的机器上,于是如何进行资源放置就成了必须回答的第一个问题。
当某用户需要获得数据时,他首先需要找到该数据,当然这与资源放置方法是直接相关的。对于以DHT方式放置的数据,可以直接定位,但在多数文件共享系统中,用户的文件都是放在各自的机器上,那么如何知道哪些机器放有某用户需要的数据就成为一个关键问题,常常需要较大规模的搜索才可以完成。资源定位就是研究如何更有效率地找到需要的资源所处的位置,尤其是一些在网络中稀有(rare)的数据。
当找到资源的位置后就需要获得资源,对于有些资源来说这并不是很直接的事,比如计算资源,比如大文件,比如流媒体资源。这里的问题主要在于如何才能更高效的获取资源,或者说如何使一些热点资源服务更多的需要该资源的用户,通常这需要尽量发挥P2P系统中所有参与者的能力。例如,在BitTorrent系统中,大量用户同时下载一份数据,用传统的client/server的模式一个服务器不可能同时支持非常多的用户,而使用P2P模式,所有正在下载的用户一方面从文件源点进行下载,另一方面更多的从其它用户那里下载,这样充分地利用了所有结点的带宽资源,使得并行下载能力得到了极大的扩展。BitTorrent现在已经成为被广泛使用的下载工具,并且对于其性质的研究也逐渐展开。
事实上,P2P已逐渐成为一种将来社会不可避免的计算模式,即:人人贡献出自己的资源、人人享受他人提供的资源。或许这种方式将会和Grid方式(所有资源和服务质量由某大型提供商提供,用户付费以获得资源并保证质量)并存但由于其具有良好的可扩展性和对于资源的充分利用,必然会长期存在下去,并得到更广泛的应用。