Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | 云栖社区 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Github | Search | About

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

目录

34.1. 什么是 IPFS
34.1.1. 传统的中心化HTTP服务
34.1.2. IPFS 解决方案
34.2. 安装 IPFS
34.2.1. go get 方式
34.2.2. 安装 ipfs-update
34.2.3. Ubuntu
34.2.4. Netkiller OSCM
34.3. ipfs 命令
34.3.1. 基本命令
34.3.1.1. 初始化节点
34.3.1.2. 添加文件
34.3.1.3. 查看文件
34.3.1.4. 下载文件
34.3.1.5. 列出文件或目录
34.3.2. 数据结构命令
34.3.2.1. 块
34.3.2.2. 对象
34.3.3. 高级命令
34.3.3.1. 守护进程
34.3.3.2. 发布并解析IPNS
34.3.3.3. 将 Pin 对象存储到本地
34.3.3.4. 查看状态
34.3.3.4.1. 仓库状态
34.3.3.4.2. 带宽状态
34.3.4. 网络命令
34.3.4.1. 显示 IPFS 信息
34.3.4.2. 节点
34.3.4.3. 管理P2P网络链接
34.3.5. 工具命令
34.3.5.1. 配置
34.3.5.1.1. 显示配置
34.3.5.1.2. 修改配置
34.3.5.2. 命令列表
34.4. HTTP 网关
34.4.1. 访问文件
34.4.2. 配置代理服务器
34.4.3.
34.4.4. 监听地址
34.5. WebUI
34.6. ipfs-update
34.7. DNS 解析
34.8. ipfs-api
34.9.

34.1. 什么是 IPFS

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

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

34.1.1. 传统的中心化HTTP服务

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

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

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

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

34.1.2. IPFS 解决方案

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

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

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