第11章 【IPFS一问一答】IPFS上传和下载数据速度快吗?

11 IPFS上传和下载数据速度快吗?

ipfs的上传数据的过程大家清楚吗?接下来我先讲解下。以单个数据上传为例子。 前提是大家本机已安装了ipfs可执行程序。

11.1 IPFS上传数据的过程

1.在当前目录下,创建一个文件foo.txt,然后执行

ipfs add foo.txt

得到一传hash值。过程如下图:

分析这一步具体发生了什么?

ipfs add命令是将文件foo.txt存储到了本地,并且范围一个hash值,这个hash值就是这个文件的指纹。

2.启动节点,连入ipfs网络

开启一个新的终端,启动命令是

ipfs daemon

显示如下图:

那么这一步具体发生了什么?

通过ipfs daemon命令启动后,我的节点就连入ipfs网络了,那么我的本地数据就可以共享到整个网络中了。但是我的文件hash值只有我自己知道,别人根本没法访问,所以foo.txt数据现在只在我的节点本地存储着,其他的网络节点都没有存储你的数据。如果,我关掉节点,那么ipfs网络中foo.txt数据就不存在了。

说白了,ipfs daemon启动后,就是告诉全网络,我有foo.txt数据了,快来访问啊。

3.我通过网页访问foo.txt数据,使其存储在ipfs网络中,而不是单单存储在我的本地。 切记:ipfs daemon不能停掉。

我在网页中输入:https://ipfs.io/ipfs/QmTzeEKzcweAsSw2mQbcKLgm6TWqbuVCqZAHk5J9543CVZ

等一会后,访问成功了,那么数据就存储到ipfs网络中了,即使我停掉本机节点(关掉ipfs daemon终端),数据依然可以在网页中得到访问。

综上,通过上边三步,我的数据就存储到ipfs网络中了,任何人都可以通过访问https://ipfs.io/ipfs/QmTzeEKzcweAsSw2mQbcKLgm6TWqbuVCqZAHk5J9543CVZ得到我的foo.txt的数据。

11.2 IPFS上传数据速度快吗?

从上边的存储过程来看,第一步和第二步属于存储数据的准备工作,第三步才是真正的存储过程。存储的速度是对应大文件来说的,小文件与传统的http没有差别,大文件明显是ipfs上传的速度快。

ipfs的大文件(比如说时1G文件)在存储时会将大文件打碎,形成多个文件碎片,每个碎片是256kb,这个碎片也会被生成一个hash值。上传过程是并发进行的,所有碎片同时向网络提供,存储节点会根据自己的wantlist表存储对应的碎片。而传统的http存储,存储节点是中心服务器,存储是以流的形式将文件全部存储。

这样一比较,ipfs是很多存储节点对大数据文件的碎片同步开始存储,当所有碎片文件都被存储完后,存储工作完成。这速度肯定是要比http存储快很多的。就像有一个活,几个人一起分摊干,肯定比1个人自己干要快的多的。

11.3 IPFS下载数据速度快吗?

IPFS会将一些大文件打散,切成一个个的小块,这样不仅可以做到从一台服务器上下载文件,也可以同时从数百台服务器进行同步下载。这极大的加快了访问速度。