IPFS数据之旅1:我的数据谁做主

被称为下一代HTTP协议的IPFS,热度仅次于EOS。但很多人对IPFS只有一些很抽象的概念。在此为大家简单解释一下IPFS网络:“可以把IPFS网络想象成一个大硬盘,全世界就这一个硬盘,这个硬盘背后是无数个对等的点组成,我们存的文件会被冗余并且分片的存到某些点上。”

IPFS是一个内容寻址,有版本管理的,点对点文件系统。本系列说的IPFS包括协议实验室在github.com上ipfs和libp2p两个组织的各种项目,不包括Filecoin。工作关系一直追踪分布式存储IPFS的各种动态,分享下自己对IPFS技术的理解,会涉及到IPFS各种工具和相关代码。

设想下面几个情景:

(可以发现我们自己的数据其实在互联网中到处都是,但是我们却没办法很好的管理这些数据。)

情景1

小A同学给小B同学传一个照片,直接能想到的都是需要通过中心化的服务,比如微信,网盘等等方式,我们给不同人分享,意味着我们会在不同app/服务商中保存同一份数据,时间长了,搞不清哪里有想找的照片。

这里面就可以用到ipfs的内容寻址(content addressing),同一份内容永远只有一个地址。对于ipfs这样的一个点对点的网络,其实没有传统的上传和下载的概念。每个人都可以把文件保存在自己的ipfs节点中,然后把文件的地址(哈希值)广播出去,如果别人需要,会根据这个哈希值在他自己的节点保存。

情景2

如果小B对照片做了修改,比如去除红眼后,分享给小C。现在问题来了,小A怎么知道有最新的修改呢?小A“沟通基本靠吼”,直接问下小B或小C。如果是更多人协作呢?

ipfs有ipns(InterPlanetary Naming System)和pubsub(订阅,发布)可以帮忙做这个事情。

情景3

如果小A希望网络中有三个备份,要怎么做呢?已有方法是放到不同服务提供商,某度网盘存一份,微信收藏一份,telegram存一份……如果要存10份呢?

ipfs的ipfs-cluster可以帮忙做指定副本数量的存储。

以上情景都可以通过IPFS解决,从设计上看,IPFS包括用DHT存储metadata,使用类似的BT的数据交换方式,使用类似git的object管理和SFS(Self-Certified Filesystems)。

上述情景都可以通过IPFS解决,那技术上到底是如何解决的呢,请关注下期的IPFS数据之旅(二)

下面给大家介绍一个简单的小工具,在自己的电脑上使用IPFS,可以安装试一下。

IPFS-companion

顾名思义,IPFS companion(IPFS伴侣)就是方便大家在浏览器中使用IPFS的各种功能。 它使用Javascript语言,支持本地的IPFS daemon或浏览器内置的基于JS的IPFS daemon(如下图)。

它使用mozilla的WebExtensions API开发,后者是一个跨浏览器的浏览器扩展/插件开发API。

IPFS companion功能包括:

上传文件

pin,unpin文件

地址转换

对地址的转换,举个栗子。

对于http的地址

(https://ipfs.io/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk),

可以生成IPFS地址:

/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk,(这个命令可以通过ipfs get下载。笔者后续会详细介绍ipfs的数据流,敬请期待。)和普通浏览器可以访问的带ipfs 网关的地址:https://ipfs.io/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk。

笔者最喜欢的功能其实是直接在浏览器使用如下四种格式IPFS链接举例:

例如下面图片

可以用

ipfs://QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk访问。

使用浏览器内置的js daemon时,浏览器地址栏会显示:

使用本地的ipfs daemon时,浏览器地址栏会显示:

二者的含义都是把内容

/ipfs/QmUgmeDNfbP61hynZAQjvy81sGoQmLQRzEaG51knUS9rjk

请求通过http api转发给ipfs.io或本地的127.0.0.1:8080 ipfs网关。ipfs网关把http请求转为ipfs的点对点协议。从上述ipfs网关开始,后面就是ipfs协议,而不是传统http协议了。

作者:半瓦,星际比特技术负责人。曾任职于SUSE,华为,海航集团等公司云计算部门,在云计算领域有10年的实践经验,资深架构师一名。欢迎后台留言交流哦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180928A0WFT300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券