首先来介绍一下IPFS,IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。它集一些系统(分布式哈希表、BitTorrent、Git、自认证文件系统)的优势于一身,是一套很厉害的文件存取系统。
IPFS本质上是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议,目标是补充甚至取代过去20年里使用的超文本媒体传输协议(HTTP),希望构建更快、更安全、更自由的互联网时代。
我们每天上网使用APP刷朋友圈、微博都在使用HTTP协议,它基于TCP/IP的计算机应用层面,从服务器传输超文本数据到本地浏览器,本地浏览器或APP渲染后呈现给用户。基于这样的网络环境构成了CS或BS架构,最后注入BAT这样大型网络提供商。
互联网平台所提供的网络服务大致经过了三种模式的迭代历程:
第一个模式属于集中化,例如早期的12306因为没法分散去做,只有一个中心服务群,所有买票的流量直接搭载在这个服务群上,承载的压力非常大。
第二个模式属于分散集群,类似于O2O百团大战时各个网站需要建立不同区域下的服务群,它们背后的IDC机房,会让同样的服务在一个局域内分散,这就减轻了中心服务器的压力。
前两种模式容易产生一些弊端:在第一种模式里,服务高度依赖中心网络。大公司或者创业公司无法承受宕机,运维有一个KPI指数叫SLA,稳定性没有到99.9%的话,基本不合格。SLA需要消耗特别大的成本,大公司需要雇一批运维专家或专业人士,去保障系统的稳定性。在第二种模式里,存储数据有丢失的风险。大家经常开玩笑的电缆被挖断,员工删库跑路,都是隐患。
同时,这两种模式的带宽成本相对高很多,会造成一定带宽资源的浪费。比如《中国有嘻哈》第一期海选的视频播放量有10亿次,假设视频文件大小是1GB,播放整个视频需要消耗1000PB的带宽量。如果按照0.001美元1GB带宽成本,爱奇艺光一期节目需要支付一百万美金给ISP(互联网服务提供商)。
IPFS有希望成为第三种模式。IPFS想打造一个点对点的网络拓扑,相当于颠覆HTTP所代表的分布关系,它具有内容可寻址的特点,通过文件内容生成唯一的哈希标识,一定程度上节约了空间开销的成本。
HTTP协议使用的域名寻址,最终会映射到最底层,找到某个域名所对应的IP地址下的某个主机,以及某个文件目录的某个文件。它不关心是否存在相同的文件,但内容寻址会通过唯一的标识去访问,并且提前检验这个标识是否已经被存储过。如果被存储过,直接从其它节点读取它,不需要重复存储,一定意义上节约了空间。
举个具体场景的例子。假设我想要看《环太平洋》这部电影,小明之前下载过这部电影,他启动了IPFS节点,将这个视频文件加入了IPFS网络。他会得到一个哈希指纹b,同时发布到公共网关,得到了一个/IPFS/b的路径名。
他把哈希指纹和路径名都告诉我,我要做的事情是启动一个本地节点,对该网关发一个寻址PIN的请求,IPFS自动索引分布式哈希表的哈希值,找到指纹b所对应的节点列表。
大的视频通常不会都存在一个节点,可能分片存在其它一些子节点上,IPFS把这些节点列表全部并行抓取,最后由本地的manager拼成完整的文件。并行的速度远远大于直接下载完整文件的速度,我很快就能在本地化的浏览器上看到电影,还可以继续分享给其他人。
敲黑板!敲黑板!请注意,使用IPFS储存数据,很难监管,所以你可以上传一些被打马赛克的令人兴奋的小视频,也可以发表不能在社交平台上发表的激进言论,非常刺激!
现在开始正式进入IPFS世界!
打开这个地址后网页会根据你的当前操作系统自动为你选择可供下载的版本,这个页面上有很多ipfs相关的软件下载,看清楚下载 go-ipfs, 这是IPFS的go语言版本实现,IPFS目前还有 js版本和 python版本(开发已停滞,团队忙不过来了)
2,安装:win版-自己选择一个文件,把软件解压缩进去,然后打开命令行,定位到刚才的文件夹下执行
>ipfs help
如果出现一堆相关的命令就成功了
mac或者linux版-解压下载文件后,在文件内执行
> ./install.sh
进行安装,安装成功是这样的
3,配置
执行ipfs init
然后输入ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
进入IPFS界面
4,节点上线
执行ipfs daemon
重新开一个命令行,执行ipfs id查看当前节点的标识:
浏览器访问http://localhost:5001/webuip进入管理界面,查看系统状态、管理文件以及配置系统。
5,添加文件
我在ipfs文件内新建一个文档型文件作为上传的对象
hashaki就是我要上传的文件
执行ipfs add -r hashaki命令
然后使用ipfs cat /ipfs/QmbDNJEdhDRrdEAzgEUwZtuhpxXhyZxeY2kA3cuZKzM2DJ来查看刚才上传的文件,而QmbDNJEdhDRrdEAzgEUwZtuhpxXhyZxeY2kA3cuZKzM2DJ就是这个文件的地址类似我们上网用的IP地址。
又或者用浏览器打开http://localhost:8080/ipfs/QmbDNJEdhDRrdEAzgEUwZtuhpxXhyZxeY2kA3cuZKzM2DJ来浏览文件