acm-header
登录

ACM通信

BLOG@CACM

点对点系统发生了什么?


波尔图大学的Carlos Baquero教授

https://bit.ly/3Z9GBzy2022年12月1日

点对点(P2P)系统在世纪之交出名,主要是因为它们支持用户之间的直接文件共享。到20世纪80年代,音乐产业已经从销售模拟黑胶唱片发展到销售数字光盘,但随着有损数据压缩技术的引入,如MP3编码格式,在用户的个人电脑中上传/下载音乐文件变得可行。尽管如此,内容必须被编目和查找,P2P系统的出现提供了这一功能。

一些早期的系统,如Napster和SETI@Home,展示了P2P和经典客户机-服务器架构的混合。Gnutella和Freenet是第二代系统,提供了更大程度的去中心化。P2P的出现极大地影响了音乐和后来的电影行业的商业模式。随着时间的推移,这些行业发展到提供统一的费率和订阅服务,减少了音乐/视频文件复制/共享的动力。

Netflix和其他订阅服务都是P2P的产物,但到底发生了什么点对点作为一个技术概念?

看谷歌趋势(https://bit.ly/3WPlGAi),我们发现这个概念几乎从我们的词典中消失了。然而,技术是被使用的;它不断进化,变得更加专业化。现代数据中心(Web 2.0)和区块链技术(Web 3.0)下的很大一部分结构都是从早期的P2P研究发展而来的。让我们考虑一些例子。

uf1.jpg
数字“点对点”的谷歌趋势

搜索引擎出现在P2P兴起之前,在20世纪90年代有了长足的发展。最初,它们只是简单的倒排索引,将相关单词映射到Web上的文档位置。第一个倒排索引没有尝试对包含给定单词的文档的重要性进行分类,这使得在结果中选择最相关的选项变得困难。在20世纪90年代末,随着PageRank的引入,这种限制被消除了,PageRank使用链接结构来对页面的重要性进行排名;谷歌就是利用这个功能创建的。但是,在集中式设置中搜索更容易。

Gnutella诞生于2000年,是最早的完全去中心化的P2P系统之一,但搜索非常原始,感兴趣的词通过泛洪传播到所有节点,如果节点有匹配搜索词的文档,就会回复来源。没有排名。一些用户甚至修改了他们的本地节点代码,假装他们总是匹配搜索条件,向其他节点发送虚假文档。很明显,P2P系统由于其开放和去中心化的性质,特别容易受到攻击。

大约在同一时间,Freenet系统引入了额外的进步。为了避免篡改文件,它提供了内容哈希键绑定到文档内容,以允许验证返回的内容是否与键匹配。另一种类型的钥匙,关键字签名密钥,允许将内容存储在可读的字符串下,如“霍比特人”,由哈希函数转换为二进制键。如果不同的内容最终存储在相同的键下,那么最流行的版本将占上风。这两种类型的键都允许查找网络中的任意数据,但当时还没有解决高效查找的问题。

Freenet在节点之间创建了一种拓扑结构,展示了小世界属性。这保证了节点之间存在短路径(跳数较少)。然而,路由算法无法一致地检测到具有本地信息的路径,这影响了查找时间。缺少的另一种成分是位置。

在21世纪初,下一代系统通过引入显示局部性的拓扑解决了这个问题。距离目标越近,到目标的路径就越多,路由算法可以通过本地信息和距离度量来确定下一跳。这些系统为用户提供分布式哈希表(Distributed Hash Table, DHT)。这些高效的内容寻址网络(Chord、CAN、Pastry、Tapestry)允许结构化N拓扑中支持日志(N)路由步骤,同时只存储日志(N)各节点的网络联络人。

并非所有这些算法都能轻易地转化为可用的系统。当节点发生故障或被替换时,保持具有良好属性的结构是很困难的。随后的算法Kademlia为内容寻址网络增加了简单性和鲁棒性。它支持对称拓扑,使用简单的异或距离度量,并允许并行探索路由。Kademlia的变体现在用于支持BitTorrent,以太坊和IPFS。

21世纪带来了聚集最终用户机器和服务器的大规模P2P系统的前景。遗憾的是,这些系统的服务质量往往很差。便携式机器在日常通勤时断开连接,用户在下载完成后终止他们的P2P进程。与此同时,集中式服务器解决方案(通常建立在SQL数据库之上)也发现难以满足日益增长的互联网用户的扩展需求。这两种模式都缺乏可用性。有趣的是,它们在设计空间中占据了两个极端:要么完全去中心化,要么完全中心化。

范式再次转变。2007年,Amazon的Dynamo提出了一个实用的系统设计,它建立在dht和最终一致性(利用了20世纪90年代早期的文件系统研究,Coda和Ficus,在术语建立之前就展示了P2P的特征)的基础上。在Dynamo中,重点是高可用性,与之前的P2P系统不同,节点被置于相同的管理控制之下,并且位于数据中心内部。节点数量从数百万减少到数百,尽管更强大,允许在dht上进行一些简化。可用性和低响应时间现在是关键问题,它们对业务有好处。

引用Dynamo的论文:“为了满足这些严格的延迟要求,我们必须避免通过多个节点路由请求……Dynamo可以被描述为零跳DHT,其中每个节点在本地维护足够的路由信息,将请求直接路由到适当的节点。”

发电机设计对2010年代的NoSQL运动产生了影响。一些数据库是按照Dynamo的模式设计的(Project Voldemort, Basho Riak, Apache Cassandra),并以零跳DHT方法为特点,但在处理副本的并发更新方面有所不同。Apache Cassandra是Apple、eBay、Instagram和其他公司使用的现代云基础设施中的重要组件。

生物学中经常引用的短语“所有成功的系统都会吸引寄生虫”可以应用于P2P系统。文件共享用户在下载完成后终止节点,不再对系统做出贡献。一些节点拒绝转发来自其他节点的查询,或者谎报正常运行时间,以提高它们在网络中的位置。

研究人员测试了不同的策略来控制搭便车者:实施下载和上传配额,以避免不平衡的下载;将文件划分为块,并以随机顺序共享它们,以防止节点在接近拥有完整文件时退出。这些策略试图强迫用户为集体做出贡献,但仍然缺少一个重要的工具:一个明确的激励系统。

哈希函数是早期P2P系统的关键技术。他们提供的证据表明,一些内容可能没有被篡改。哈希可以在(链)序列和直接无环图中组合,以提供更复杂的认证。2008年,比特币被描述为“一个点对点分布式时间戳服务器,用于生成交易时间顺序的计算证明”。在这些区块链系统中,每个对等点都保留了所有交易的本地副本,并可以尝试通过与其他节点竞争/协作来添加新的条目来扩大交易链。为了防止Sybil攻击,通过一个节点模拟许多其他节点来积累投票权,这些系统可以通过显示持有令牌来利用工作量证明、花费计算时间或权益证明。

区块链可以支持新货币的创建,并处理用户之间的货币转移(由加密密钥对识别)。币的生成和分配,特别是当币可以兑换法定货币或商品时,创造了一种激励机制来保持P2P系统的运行。

区块链技术仍在不断发展,并寻求成功的应用。它可能被视为20年前P2P颠覆性革命的延续,其对金融体系的影响已经显而易见。我们可能需要再等20年才能研究区块链系统的遗产看看哪些技术概念最终产生了持久的影响。

回到顶部

致谢

我要感谢罗德里戈·罗德里格斯、佩德罗·恩里克·费尔南德斯和佩德罗·索托就改进本案文提出的意见。

*进一步的阅读

  1. 点对点:利用颠覆性技术的力量。Andy Oram, Ed. O'Reilly & Associates。2001年3月。
  2. Rodriques, R.和Druschel, P.点对点系统。Commun。ACM 53, 1(2020年1月);https://bit.ly/3X43Dpt

回到顶部

作者

卡洛斯Baquero他是葡萄牙波尔图大学工程学院信息工程系的教授,同时也是INESC TEC的成员。他的工作主要集中在分布式系统和算法。


©2023 acm 0001-0782/23/03

本论文部分或全部的电子版或硬拷贝供个人或课堂使用的许可是免费的,前提是副本不是为了盈利或商业利益而制作或分发的,并且副本的第一页上必须有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有署名的摘要。以其他方式复制,重新发布,在服务器上发布,或重新分发到列表,需要事先特定的许可和/或费用。请求发布权限permissions@acm.org或传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2023 ACM, Inc.


没有找到条目

登录全面存取
忘记密码? »创建ACM Web帐户
文章内容:
Baidu
map