Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | Github | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

第 27 章 IPFS(InterPlanetary File System,星际文件系统)

目录

27.1. 什么是 IPFS
27.1.1. 传统的中心化HTTP服务
27.1.2. IPFS 解决方案
27.2. 安装 IPFS
27.2.1. go get 方式
27.2.2. 安装 ipfs-update
27.2.3. Ubuntu
27.2.4. Netkiller OSCM
27.2.4.1. 源码安装
27.2.4.2. ipfs-update
27.2.5. Mac OS

27.1. 什么是 IPFS

IPFS “星际文件系统” 是去中心化保存和共享文件的分布式文件系统,它是一种内容可寻址、版本化、点对点超媒体的分布式协议,IPFS旨在替代HTTP。它希望将所有的计算设备都连接到同一个文件系统中。

由于 IPFS 去中心化特点,使得很多区块链项目做文件存储的时候首选IPFS。

27.1.1. 传统的中心化HTTP服务

举个例子,服务器上有一个文件https://www.netkiller.cn/video/av.mp4,按照HTTP协议标准流程,浏览器首先会解析域名并查找到服务器的IP地址,随后与服务器建立链接,并根据路径向服务器请求该文件/video/av.mp4。在这种体系下用户是否能获取该文件取决于文件是否被移动或删除,并且服务器没有关闭。

另一个问题就是文件服务器管理,中心化管理是很复杂的,如果访问量比较大,我们通常会使用负载均衡来解决,负载均衡需要每个节点上的数据是完整的,这就需要大量的数据同步。如果从深圳数据中心同步到上海数据中心 100T的数据可能要数个工作日。

HTTP过度依赖Internet主干网,同时网络通信遭遇DDoS攻击的风险也大大增加。

CDN 只解决最后一公里的性能问题,数据回源仍然是中心化,仍然无法彻底解决。

27.1.2. IPFS 解决方案

IPFS的做解决方案是不再关心中心服务器的位置,也不考虑文件的名字和路径,只关注文件中的内容。例如将文件av.mp4添加到IPFS节点,会得到一个新名字QmS8R3nSbDHjQ7WRTjtX1pkiQ6BUpti9qTjweZkBgGPKiN,通过文件内容计算出的哈希值,访问文件不在使用文件名而是使用这个统一的 hash 值。

当用户被请求一个文件哈希时,它会根据这个分布式哈希表找到文件所在的节点,并取回文件内容并验证文件数据。大文件会被切分成小的分块,下载的时候可以从多个服务器同时获取。

IPFS 可以理解为内容被永久缓存到节点上的CDN。