首先来介绍一下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拼成完整的文件。并行的速度远远大于直接下载完整文件的速度,我很快就能在本地化的浏览器上看到电影,还可以继续分享给其他人。

因为中心化服务还可以限制一些下载请求,人们发明了一种更聪明的方式就是Bittorrent,让每一个种子节点所要存储的数据,通过哈希表存储在里面,BT工具相对不太受监管,服务更加稳定。敲黑板!敲黑板!请注意,使用IPFS储存数据,很难监管,所以你可以上传一些被打马赛克的令人兴奋的小视频,也可以发表不能在社交平台上发表的激进言论,非常刺激!

现在开始正式进入IPFS世界!

1,下载IPFS系统:下载地址:https://dist.ipfs.io/#go-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来浏览文件

是的,我在一个永久保存的系统内,表白了女神,当然当事人是肯定不知道的。

又或者使用ipfs官方http网关:https://ipfs.io/ipfs/http://localhost:8080/ipfs/QmbDNJEdhDRrdEAzgEUwZtuhpxXhyZxeY2kA3cuZKzM2DJ

6,获取文件

使用ipfs get /ipns/QmbDNJEdhDRrdEAzgEUwZtuhpxXhyZxeY2kA3cuZKzM2DJ获取我上传的文件

以上!

欢迎到我个人公众号内吐槽和交流:

让IPFS星际文件系统永久保存你的数据相关推荐

  1. IPFS星际文件系统科普

    IPFS一般指星际文件系统. 星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议. 它是一种内容可寻址的对等超媒体分发协议. 在IPFS网络中的节点将构成一个分布式文件系统. 它是一个 ...

  2. Computer:IPFS(星际文件系统)的简介、安装、使用方法之详细攻略

    Computer:IPFS(星际文件系统)的简介.安装.使用方法之详细攻略 目录 IPFS的简介 1.IPFS的应用 IPFS的安装 IPFS的使用方法 1.下载文件 第一步,启动IPFS节点 第二步 ...

  3. IPFS星际文件系统下载及安装

    ipfs的下载与安装 ipfs星际文件系统是一个面向全球的.P2P的分布式文件系统. 目标是补充(甚至是取代)目前通知互联网的超文本传输协议http. 与传统的基于域名寻址的http协议相比较,ipf ...

  4. IPFS星际文件系统(中文白皮书)

    IPFS - 可快速索引的版本化的点对点文件系统 作者: Juan Benet (juan@benet.ai) 译者: 郭光华(gavin@8btc.com) 摘要 星际文件系统是一种点对点的分布式文 ...

  5. ipfs星际文件系统初体验

    ipfs是InterPlanetary File System的简称,即星际文件系统,他不同于一般的操作系统文件系统,也不同于分布式文件系统,因为分布式文件系统最终访问文件还是采用的http协议,而i ...

  6. IPFS星际文件系统注定会成为伟大的项目

    资料来源:smg-corporate.com 作者丨Jonas Bostoen 翻译丨Jason · · 这篇文章将分为IPFS的理论介绍和IPFS的使用指南两部分. 第一部分旨在向大家展示IPFS是 ...

  7. IPFS(星际文件系统)-初步接触

    〇.IPFS介绍 从HTTP到IPFS,星际文件系统能变革信息传播的方式吗? 戴嘉乐:详解IPFS的本质.技术架构以及应用 以下为实现相关摘要 1.存储 在IPFS中,信息可以存储进IPFS系统中的块 ...

  8. IPFS(星际文件系统)的安装与使用

    本教程系统环境:Windows10 其他系统下的安装教程可以参考IPFS官方文档 Step 1 按下windows键+R,输入powershell,点击运行,打开PS终端. Step 2 在PS中下载 ...

  9. 什么是星际文件系统(IPFS)

    星际文件系统(IPFS)会是将来一个非常重要的技术.IPFS的全称是Interplanetary File System,是一种p2p的文件分享系统,目的是要改变信息分发的方式.它在通信协议和分布式系 ...

  10. 中创|使用分布式存储协议,NFT收藏可永久保存

    2021年第1季度的NFT支出超过20亿美元,比2020年第4季度增长了2100%,这些也只代表NFT行业最近快速发展的众多数据之一,随着空间的不断扩大,人们每天都在创造数千个NFT,一个重要的问题出 ...

最新文章

  1. java编译的语句_在Java语言中,下列语句能通过编译的是()。
  2. Groovy里使用CountDownLatch
  3. 软件架构(5)---软件架构设计的一些总结和理解
  4. “手把手撕LeetCode题目,扒各种算法套路的裤子”
  5. Elastic Search + Logstash + Kibana 初学者日志
  6. 【OpenCv3】 VS C++ (五):SLIC超像素分割算法
  7. 佳博GprinterApp编辑软件使用说明
  8. python异常类型大全
  9. 【历史上的今天】1 月 1 日:惠普诞生;互联网的规范化;百度成立
  10. Cocos Creator如何制作3D微信小游戏教程
  11. matlab的雷劈数算法,寻找雷劈数
  12. 不是公网ip怎么搭建服务器
  13. 树莓派Remote GPIO启用方法
  14. 混沌工程落地的六个阶段
  15. Flutter学习指南:UI布局和控件,作为Android开发者
  16. 淘宝客导购产品设计 (一)
  17. 【Python随笔】python进程池ProcessPoolExecutor的用法与实现分析
  18. jsl(jsl音响)
  19. mysql 分表规则获取表名_mysql分表和表分区详解
  20. 《思维力—高效的系统思维》

热门文章

  1. 春节宅家玩什么?8款小游戏陪你一起过年
  2. 恒流源差分放大电路静态分析_差分放大电路常见的形式
  3. word字体中几号字与多少磅的对应关系
  4. 关于WireShark跟随数据流后entire conversation显示的字节数分析
  5. CAD中图形无法复制,使用块插入来合并两个dwg图形
  6. 到底如何理解文本?一文读懂命名实体识别(实体消歧和实体统一)
  7. linux摄像头内核驱动开发,Linux系统下USB摄像头驱动开发
  8. Dev C++ 源文件编译时,确实没问题,但是运行时,总是提示源文件 未编译
  9. linux aria2 离线,使用aria2做离线下载
  10. Cocos2d-x《雷电大战》(4)-策略模式实现不同子弹切换!!