P2P 世界:从计算机科学角度看什么是 P2P
从技术上来说,真正的点对点应用程序必须仅实现对等协议,这些协议不识别“服务器”和“客户端”的概念。这种纯对等应用程序和网络很少见。大多数被称为点对点的网络和应用程序实际上包含或依赖于某些非对等元素,例如 DNS。此外,现实世界中的应用程序通常使用多种协议,并且同时或随着时间的推移充当客户端、服务器和对等体。
从计算机科学的角度来看,P2P 为研究创造了新的有趣领域,这些领域不仅集中在网络组件的角色的最新转变上,而且还集中在它带来的不可预见的好处和资源优化,以及网络效率和稳定性上。
点对点系统和应用程序引起了计算机科学研究的极大关注;一些著名的研究项目包括 Chord 查找服务、PAST 存储实用程序和 CoopNet 内容分发系统(有关这些项目的外部链接,请参见下方)。
同样重要的是要注意,计算机主要是一种信息设备,其主要功能是从一个位置复制数据到另一个位置,甚至比执行其他类型的计算更重要。这使得数字复制成为任何计算机正常功能的内在部分,不可能用任何类型的复制保护来实现通用开放计算的目标。在数字时代,版权的执行不应被视为技术问题,而应被视为社会需要适应的新现实。
分布式系统正在成为 IT 公司数据中心计算的关键组成部分。这些系统的通用示例是 Google 基础设施 或任何类似系统。如今,这些系统的大部分发展都集中在如何分析和改进性能上。P2P 系统也是分布式系统,并且根据实现的不同,共享分布式系统的特性和问题(错误/故障检测、对齐机器时间等)。
Ganglia 是一种可扩展的分布式监控系统,适用于高性能计算系统,例如集群和网格。它基于针对集群联合体的分层设计。它利用了广泛使用的技术,例如 XML 用于数据表示,XDR 用于紧凑的、可移植的数据传输,以及 RRDtool 用于数据存储和可视化。它使用精心设计的數據结构和算法来实现非常低的每个节点开销和高并发性。
Ganglia 已移植到大量操作系统和处理器体系结构,目前正在全球数千个集群中使用。它已用于将跨大学校园和全球的集群链接起来,并且可以扩展到处理包含 2000 个节点的集群。( http://ganglia.info/ )
分布式计算背后的基本前提是在空间上分布的多台机器之间传播计算任务,大多数新项目专注于利用“个人”分布式机器(普通家用 PC)的闲置处理能力。这种当前趋势是一个令人振奋的技术领域,它与分布式系统(客户端/服务器通信、协议、服务器设计、数据库和测试)的子集有关。
这种对旧概念的新实现源于人们认识到,现在我们的家中存在着数量惊人的计算机,这些计算机利用率极低,不仅是家用计算机,而且还有一些企业在一天的 24 小时内都没有充分利用其计算机。事实上,看似活跃的计算机可能只使用了其一小部分的处理能力。使用文字处理、电子邮件和网页浏览需要非常少的 CPU 资源。因此,“新”概念是利用这种未被充分利用的资源(CPU 周期),这种资源可以以低得多的成本超越多个超级计算机,因为机器是由公众个人拥有和操作的。
最著名的 分布式计算 项目之一,由位于美国加利福尼亚州伯克利 加州大学伯克利分校 的 空间科学实验室 托管。SETI 是 搜寻地外文明计划 的缩写。 SETI@home 于 1999 年 5 月 17 日发布。
平均而言,它使用数十万台连接到互联网的家用计算机来搜寻地外文明。这些程序的重点是运行你的空闲 CPU 周期,这些周期在其他情况下会处于闲置状态,原始项目现在已弃用,并将被纳入 BOIC。
BOINC 由加利福尼亚州伯克利 加州大学伯克利分校 空间科学实验室 的一个团队开发,该团队由 大卫·安德森 领导,他也领导着 SETI@home。
Boinc 代表伯克利开放式网络计算基础设施,这是一个非商业性的 (免费/开源软件),在 LGPL 下发布的 中间件 系统,最初是为了支持 SETI@home 项目而开发,并且仍在 ( http://boinc.berkeley.edu/ ) 托管,但旨在对数学、医学、分子生物学、气候学和天体物理学等各个领域的其他应用程序有用。这是一个用于使用志愿者资源进行计算的开源软件平台,它扩展了原始概念,并允许你将计算能力捐赠给其他科学研究项目,例如
- Climateprediction.net:研究气候变化。
- Einstein@home:搜索脉冲星发出的引力信号。
- LHC@home:改进欧洲核子研究组织大型强子对撞机粒子加速器的设计。
- Predictor@home:调查与蛋白质相关的疾病。
- Rosetta@home:帮助研究人员开发治疗人类疾病的方法。
- SETI@home:寻找地外生命存在的无线电证据。
- Folding@Home ( http://www.stanford.edu/group/pandegroup/folding/ ):了解蛋白质折叠、错误折叠和相关疾病。
- 细胞计算生物医学研究。(日语;需要非标准的客户端软件)
- 世界社区网格:推进我们对人类疾病的了解。(需要 5.2.1 或更高版本)
作为一种“准超级计算”平台,BOINC 在全球拥有超过 435,000 台活动计算机(主机)。BOINC 由 美国国家科学基金会 通过 SCI/0221529、SCI/0438443 和 SCI/0506411 拨款资助。
它也用于商业用途,因为一些私营公司开始使用该平台来协助自己的研究。该框架支持各种操作系统:Windows (XP/2K/2003/NT/98/ME)、Unix (GNU/Linux、FreeBSD) 和 Mac OS X。
世界社区网格(World Community Grid,http://www.worldcommunitygrid.org/)由IBM创建,与上述系统类似。十四台IBM服务器作为WCG的“指挥中心”。当他们从某个组织收到一项研究任务时,他们会检查其安全漏洞,将其解析为数据单元,对其进行加密,将其通过调度器运行,然后将其以三份副本发送给志愿者PC大军。
要成为志愿者,只需要下载一个免费的小型软件代理(类似于屏幕保护程序)。
项目的选择基于从WCG技术中获益的潜力以及解决人道主义问题的潜力,由独立的外部慈善家、科学家和官员委员会选择。
该软件是开源的(LGPL),C/C++和wxWidgets,适用于Windows、Mac或Linux。
网格最初出现在美国超级计算机的使用中,当时科学家和工程师寻求访问集中在少数几个地点的稀缺的高性能计算资源。
开放科学网格(Open Science Grid,http://www.opensciencegrid.org/)由OSG联盟建立和运营,它是一个美国网格计算基础设施,通过大学和国家实验室的科学研究人员和软件开发人员、存储和网络提供商之间的开放合作,支持科学计算。
Globus联盟(http://www.globus.org/)是一个组织和个人组成的社区,他们开发“网格”背后的基础技术,该技术使人们能够安全地跨越企业、机构和地理边界共享计算能力、数据库、仪器和其他在线工具,而不会牺牲本地自治权。
Globus联盟还提供Globus工具包,这是一个开源软件工具包,用于构建健壮、安全、网格系统(超级计算机、集群和其他高性能系统上的点对点分布式计算)和应用程序。Globus开发人员社区可以使用Wiki(http://dev.globus.org/wiki/Welcome)。
一些科学家试图从他们的计算环境中提取更多每秒浮点运算(FLOPS)或每分钟,而另一些科学家则专注于在更长时间尺度(如几个月或几年)上实现相同的目标,我们称这些环境为高性能计算(HPC)环境。
HTC这个术语是在1996年7月在NASA戈达德太空飞行中心的研讨会上提出的,作为高性能计算(HPC)和高吞吐量计算(HTC)之间的区别。
HTC关注的是处理能力而不是网络,但这些系统也可以在网络上创建,因此可以被视为针对处理能力优化的网格网络。
Condor项目(http://www.cs.wisc.edu/condor/)的目标是在大型分布式拥有计算资源集合上开发、实施、部署和评估支持高吞吐量计算(HTC)的机制和策略。在受到这种计算环境的技术和社会挑战的双重驱动下,Condor团队一直在构建软件工具,使科学家和工程师能够提高他们的计算吞吐量。
IBM与IT领域其他巨头一样,投入了一些资源来研究网格计算。他们在网格计算方面的尝试列在项目门户页面(http://www.ibm.com/grid)上。所有这些似乎都试图利用服务器机器上的企业优势来为客户提供网格服务。最活跃的项目是网格医疗档案解决方案,这是一个可扩展的虚拟存储解决方案,面向医疗保健、研究和制药客户。
分发大型文件的传统方法是将它们放在中央服务器上。服务器和客户端可以使用预先约定的协议(从HTTP、FTP到无数的变体)在网络上共享内容,当使用IP连接时,数据可以通过TCP或UDP连接发送,或者两者兼而有之,这主要取决于对服务、机器、网络和许多安全考虑因素的要求。
关于速度、可用性和服务一致性方面的优化优势,以及最佳本地化的优化优势,都是不言而喻的。Akamai Technologies和Limelight Networks等类似解决方案试图以商业方式解决这个问题,甚至Google也将其数据中心的地理位置分散开来,以加快其服务的响应速度。这解决了大型内容和服务分发方面的需求,但没有完全实现控制结构的去中心化。
P2P的出现是为了解决一个明显的问题,即中央服务器无法很好地扩展。带宽、空间和CPU构成了一个故障点,很容易导致系统的功能结束,就像任何服务的集中化一样。
P2P尚未成为一个成熟的研究领域,甚至不是一个特定的计算机科学领域。P2P技术涵盖了太多主题,以至于很难将所有交互都限制在自身领域。因此,许多相关信息很难找到。
- 会议
对于会议,其中一个提供非商业化和平台无关观点的更新信息的地方是GNUnet项目在https://gnunet.org/conferences上提供的列表。
- 论文