分布式存储网络不是近几年才出现的,其中BitTorrent、Kazaa和Napster是最著名的三个。时至今日,这些系统在全球仍拥有数亿活跃用户。尤其是BitTorrent客户端,现在BitTorrent网络每天仍然有超过1000万个节点上传数据。(很多刚从高校毕业的朋友应该还记得学校内网IPv6共享电影和游戏资源的场景。)遗憾的是,这些应用本来就是根据具体需求设计的,在这三者的基础上灵活构建更多的功能显然很难。虽然在此之前学术界和工业界已经做了一些尝试,但是世界上从来没有一个通用的分布式文件系统能够做到低延迟和完全去中心化。
普及进度非常慢的原因之一可能是现在广泛使用的HTTP协议已经足够好了。到目前为止,在部署的分布式文件系统中,HTTP是最成功的案例。它与浏览器的结合是互联网数据传输和显示的最佳伙伴。然而,互联网技术的进步从未停止,甚至一直在加速。随着互联网规模的日益扩大,现有技术暴露出诸多弊端,巨大的基础设施投入使得新技术的推广变得异常困难。但是我们说技术有它的适用范围,HTTP也是。
四个问题让HTTP面临越来越多的困难:
1)极易受到攻击,防范攻击的成本高。随着Web服务变得越来越集中,用户非常依赖少数服务提供商。HTTP是骨干网上脆弱的、高度集中的、低效的、过度依赖的协议,集中的服务器容易成为攻击的目标。目前,为了维持服务器的正常运行,服务提供商不得不使用各种昂贵的安全方案,防止攻击的成本越来越高。这已经成为HTTP几乎无法克服的问题。
2)数据存储成本高。互联网经过十几年的快速发展,互联网数据存储量每年都呈指数级增长。2011年全球数据量已经达到0.7ZB(1ZB等于1万亿GB);2015年全球数据量为8.6ZB;2016年,这个数字是16.1 ZB。到2025年,全球数据预计将增长到惊人的181ZB,是2016年产生的16.1ZB数据的10倍以上。如果我们希望存储4,000 GB (4 TB)的数据,AWS简单存储服务(S3)将对第一个TB收取每GB 0.03美元的费用,对接下来的49TB收取每GB 0.0295美元的费用,那么每月的磁盘空间费用为118.5美元。数据量迅速增加,但存储价格仍然很高,这导致未来服务器-客户端架构面临严峻挑战。
3)数据的集中化带来了泄露的风险。服务商在为用户提供各种便利服务的同时,也存储了大量的用户隐私数据。这也意味着,一旦数据中心发生大规模数据泄露,将是一场数字核爆。对于个人而言,如果用户信息泄露,用户账号将面临被盗的风险,个人隐私和财产安全难以保障;对于企业来说,信息泄露事件会导致其在公众中的威信和信任度下降,直接使客户改变原有的选择倾向,并可能使企业失去大量现有或潜在的客户。这不是危言耸听,重大的数据库泄露几乎每年都会发生。2018年5月,Twitter被曝存在安全漏洞,泄露3.3亿用户密码;2017年11月,五角大楼意外泄露了自2009年以来收集的18亿条用户信息;2016年,超过1.67亿个LinkedIn账户在黑市公开出售;2015年,Jifeng.com被曝泄露2300万用户信息。有兴趣的读者可以尝试在公共密码泄露数据库中查询自己的常用信息或密码是否被泄露,自己却毫不知情。
4)大规模数据存储、传输和维护困难。现在进入大数据时代,HTTP协议可以& # 039;不能满足新技术的发展要求。如何存储和分发PB级大数据,如何处理高清流媒体数据,如何修改和迭代大规模数据的版本,如何避免重要文件的意外丢失,这些都是阻碍HTTP继续发展的大山。
IPFS的诞生就是为了解决上述问题。其优点如下:
1)下载速度快。HTTP上的大部分网站都经历了从中心化到分布式架构的转变。与HTTP相比,IPFS将集中式传输模式改为分布式组播传输。IPFS采用BitTorrent协议作为数据传输方式,大大提高了IPFS系统的数据传输速度,节省了约60%的网络带宽。
2)优化全局存储。IPFS通过对数据块内容建立哈希重复数据删除来存储数据,数据的存储成本将大幅降低。
3)It & # 039;it’更安全。与现有的集中式云存储或个人存储服务相比,IPFS和Filecoin的分布式特性和加密算法使数据存储更加安全,甚至可以抵御黑客攻击。
4)数据的可持续保存。目前网页的平均生命周期只有100天,每天都会删除大量的互联网数据。互联网上的数据是人类文明的记录和展示。IPFS提供了一种可持续保存互联网数据的存储模式,并提供了数据版本历史的追溯功能。
我们上面提到IPFS技术是多年积累的,它参考了至少四种技术的优势,并把它们整合在一起。这四种技术是DHT、Kademlia、Git和自认证文件系统。
第一个可以借鉴IPFS的技术是DHT,这是一种分布式哈希表方法。DHT的原理是每个客户端在没有服务器的情况下存储少量数据,负责搜索某个区域,从而实现整个DHT网络的寻址和搜索。新版BitComet允许同时连接DHT网络和Tracker,不需要Tracker也可以下载。
IPFS借鉴的第二项技术是Kademlia。在Kademlia网络中,所有信息都以哈希表条目的形式存储,分散在各个节点上,从而在整个网络中形成一个庞大的分布式哈希表。这个哈希表可以形象地看作是一个字典:一旦知道了信息索引的键,就可以通过Kademlia协议查询对应的值信息,而不管值信息存储在哪个节点上。正是这个特性确保了IPFS成为一个没有中央调度节点的分布式系统。
IPFS也借鉴了BitTorrent网络。首先,它& # 039;这是对消极上传者的惩罚措施。在BitTorrent上上传数据& # 039;的客户端将奖励点,而负节点不& # 039;长时间不上传会被扣分。如果分数低于一定限度,那么网络将拒绝再次为他们提供服务;其次是文件可用性检查,BitTorrent优先共享稀缺文件,各客户端互补,种子不易失效,提高传输效率。我们赢了& # 039;不详细讨论BitTorrent。感兴趣的读者可以查阅BitTorrent相关文档。
对IPFS有重大影响的第三个项目是Git。我们在传输或修改大文件时,总会遇到存储或传输压力大的问题,而Git在版本迭代方面非常优秀。Git存储的时候会把文件拆分成几个部分,并计算每个部分的哈希值,用这些来构建文件对应的有向无环图(DAG)。DAG的根节点也是文件的哈希值。这样做的好处很明显:如果需要修改文件,只需要修改图中的几个节点;共享文件相当于共享此图表;要传输所有文件,请根据图中的哈希值下载并合并它们。
最后一种是Self-certifyingFileSystem文件系统(SFS),将所有文件保存在同一个目录下,所有文件都可以在相对路径中找到。其SFS路径名是其原始路径和公钥的散列。聪明的读者会发现,这种设计包含了身份的隐式认证功能,这也是SFS被称为自认证文件系统的原因。