深入理解 IPFS - 消费/订阅系统

本文译自:https://docs.libp2p.io/concepts/publish-subscribe/

发布/订阅系统是节点聚集在他们感兴趣的主题上。节点对这个主题感兴趣被称为订阅了此节点。

节点可以发送消息给主题,每个消息都需要发送到订阅此主题的所有节点。

使用 pub/sub 系统的例子

  • 聊天室 每个聊天室都是一个主题,客户端发送聊天消息到聊天室,其他客户端都可以收到。
  • 文件共享 每个 pub/sub 主题代表一个可以下载的文件。上传者和文件的下载者通知他们所拥有的文件,在 pub/sub 系统之外协调下载。

Read More

深入理解 IPFS - 分布式代理

今天我们利用 libp2p 创建一个简单的分布式 http 代理,具体 demo 参见官方 example: proxy.go

代理,同学们都很熟悉,不管是写爬虫,还是开发服务器,都或多或少的接触过。
本质上就是通过一个中间节点转发流量到目标地址。libp2p 也是一样,不过对他来说,每个节点都是平等的,理论上都可以作为客户端或者代理。另外他底层的 stream 模块也让开发变的更加容易。

1
2
3
4
5
6
7
8
9
10
                                                                                                   XX  XXXXXX
X XX
XXXXXXX XX XX XXXXXXXXXX
+----------------+ +-----------------+ XXX XXX XXX XXX
HTTP Request | | | | XX XX
+-----------------> | libp2p stream | | HTTP X X
| Local peer <----------------> Remote peer <-------------> HTTP SERVER - THE INTERNET XX
<-----------------+ | | | Req & Resp XX X
HTTP Response | libp2p host | | libp2p host | XXXX XXXX XXXXXXXXXXXXXXXXXXXX XXXX
+----------------+ +-----------------+ XXXXX

为了能够代理一个请求,我们需要先创建一个本地节点监听 localhost:9900 。HTTP requests 通过 libp2p stream 模块打到远程节点。远程节点发起 http 请求,并将 response 返回给本地节点,本地节点再中继返回给客户端。

Read More

深入理解 IPFS - DHT 网络(1)

在前面的文章中,我们说过,DHT(分布式哈希表)是 IPFS 一个重要的组成部分,接下来我们会分别从应用,原理两个方面来分析 DHT。

IPFS 的网络层源码在 libp2p 中,本文用 go-libp2p 做分析。

我们假设一个场景应用,有两个节点名字分别叫 earth 和 mars,然后他们分别加入了 DHT 网络,接下来他们需要找到对方,并能够互相发送消息。

Read More

深入理解 IPFS - 分层架构总览

我们首先从官方文档中一张比较经典的层级架构图开始,右边是 IPFS 的层级图,左边是对应现实网络中的一些实现形式。

(一) applications 应用层

这个很好理解,就是基于 IPFS 网络开发的应用。我们可以在 awesome 看到一些应用。生态能不能繁荣,肯定是需要开发者参与。

Read More

基于 IPFS 的去中心化短链接服务

短链接服务国内外有很多,如免费的服务域名 t.cn,t.co, url.cn。但由于服务由公司提供,一旦公司关停服务,原来生成的短链接就面临没法访问的风险。如 google 就把之前的 goo.gl 域名停用了,当然之前生成的链接目前还提供服务。鉴于此,我们提供了一个基于 IPFS ,永久有效,不受任何中心化公司影响的短链接服务 DtinyUrl

你可以访问任意生成链接跳转到你的目标网址,当然如果你有自己的 IPFS 节点,也可以改成自己的节点地址。

Read More