专栏首页圆方圆学院精选【董天一】IPFS: pubsub功能的使用

【董天一】IPFS: pubsub功能的使用

作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者 毕业于北京大学软件与微电子学院,资深区块链技术开发者,现致力于IPFS/Filecoin在中国的技术推广,本文原载微信公众号:IPFS指南(ipfs_guide)

什么是 pubsub?

发布订阅模式(Publish–subscribe pattern),最早是由苹果公司在 Mac OS 引入。

消息的发送者(publishers)不直接将消息发送给接收者(subscriber)。而是将消息分门别类,发送者并不知道也无需知道接收者的存在。而接收者只需要订阅一个或者多个类别的消息类,只接收感兴趣的消息,不知道也无需知道发布者的存在。(https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)

写代码的朋友对于观察者模式(Observer)并不陌生。这个有些类似软件设计模式里面的观察者模式(Observer)。但是并不完全相同。pubsub比Observer更加的松耦合。这里不再详细对比二者的区别。有兴趣的朋友自行Google一下。

pubsub功能目前还属于ipfs的一个实验性质的功能,如果要开启pubsub功能,在启动ipfs daempon的时候需要指定参数: --enable-pubsub-experiment。

下面我们使用具体例子来说明ipfs pubsub 如何使用?

1 搭建两个IPFS节点A和B,

如果还不知道节点如何搭建,参见之前的文章(如何在IPFS网络里面上传一张图片)

A(小编本地节点):

IPFS节点ID: QmTrRNgt6M9syRq8ZqM4o92Fgh6avK8v862n2QZLyDPywY

IPFS地址:192.168.162.129(保护隐私,没有使用公网IP)

B(亚马逊aws):

IPFS地址:13.231.198.154

IPFS节点地址; /ip4/13.231.198.154/tcp/4001/ipfs/QmXL2h6Y51BHZMaypzjCnNc1MiVk2H5EZJxWgAuRkLanaK

2 启动节点B

ipfs daemon --enable-pubsub-experiment

(注意这里需要使用参数 --enable-pubsub-experiment)

3 为了快速演示,将节点A和B直连

3.1 删除节点A的全部bootstrap地址

ipfs bootstrap rm all

3.2 在A节点添加B节点为bootstrap节点

ipfs bootstrap add /ip4/13.231.198.154/tcp/4001/ipfs/QmXL2h6Y51BHZMaypzjCnNc1MiVk2H5EZJxWgAuRkLanaK

4 启动节点A

ipfs daemon --enable-pubsub-experiment (注意这里需要使用参数 --enable-pubsub-experiment)

5 pubsub功能使用

5.1 在A节点上新开一个命令行,执行

ipfs pubsub sub flytofuture

这句的意思是我们在节点A订阅了消息主题:flytofuture。凡是发往这个消息主题的消息都会被A节点接收到。

5.2 我们在B节点对消息主题 flytofuture发送消息

ipfs pubsub pub flytofuture "hello, IPFS指南,飞向未来!"

这个时候我们就可以在A节点的命令行看到消息输出:hello, IPFS指南,飞向未来!

两个跨越了不同网络,不同地域的IPFS节点进行pubsub功能的通信。

实际上,pubsub功能不仅仅之只限于两个直连的节点之间,还可以通过中间节点进行中转。

例如:有A,B,C三个节点

A链接到B

B连接到C

A与C并不直接连接。

那么A仍然可以订阅收到来自于C的消息。这对于一些复杂的网络环境里面非常有用,比如在一些NAT不太友好的网络环境。

pubsub相关的命令使用和功能

pubsub相关的命令使用:

  • ipfs pubsub ls -- 列出来本节点订阅的全部主题
  • ipfs pubsub peers -- 列出来与本节点相连接的开通pubsub功能的节点
  • ipfs pubsub pub -- 发布数据到相应的主题
  • ipfs pubsub sub -- 订阅主题

pubsub功能有很多用途,广大开发者可以开脑洞基于这样的功能构建出来自己的应用。

目前IPFS上有两个标杆应用是基于pubsub功能进行搭建的。

  • orbit-db: 分布式数据库
  • Orbit: 点对点的聊天工具----

相关文章和视频推荐

【董天一】如何在IPFS网络里面上传一张图片

圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。

公开课地址:https://ke.qq.com/course/345101?flowToken=1007371

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【董天一】IPFS:世界正在悄然发生变化

            2015-05-05 Juan Benet 在自己的终端里面敲入了下面的文字:

    圆方圆学院
  • 【董天一】IPFS: BitSwap协议(数据块交换)

    IPFS在BitTorrent的基础上实现了p2p数据交换协议:BitSwap协议

    圆方圆学院
  • 【戴嘉乐 IPFS】基于IPFS和GeoHash构建具有地理位置价值服务的DDApp(理论篇)

    打造地理位置信息与区块链的关系对象模型,建立一套 人->位置->真实世界->传递信任->价值转移->位置->人 的生态模型,实现用区块链来索引真实世界的愿景。

    圆方圆学院
  • 【译】Let’s Encrypt – 免费的SSL/TLS证书

    每一个建立过安全站点的人都在如何维护证书这个问题上深受困扰。Let’s Encrypt 推荐的客户端 Certbot,能够自动的消除这些用户的痛点,并且让站点维...

    用户2131907
  • 计算机组成原理--复习简答题+答案

    1.什么是总线?总线主要有哪些特性? (1)总线是连接多个部件的信息传输线,是各部件共享的传输介质。 (2)总线特性: 机械特性(总线在机械连接方式上的一些...

    TrueDei
  • Android Activity生命周期整理

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • XSS攻击之窃取Cookie

    译者按: 10 年前的博客似乎有点老了,但是XSS 攻击的威胁依然还在,我们不得不防。

    Fundebug
  • MySQL 8.0 新特性:极速“备份恢复工具”,Clone 插件

    备份恢复是 DBA 必备的技能,开源数据库 MySQL 在社区中有不少常用的备份恢复方案,xtrabackup,mypump,mydumper,mysqldum...

    Tomo@An
  • Kafka源码系列之源码分析zookeeper在kafka的作用

    浪尖的kafka源码系列以kafka0.8.2.2源码为例给大家进行讲解的。纯属个人爱好,希望大家对不足之处批评指正。 一,zookeeper在分布式集群的作...

    Spark学习技巧
  • Kafka源码系列之源码分析zookeeper在kafka的作用

    Spark学习技巧

扫码关注云+社区

领取腾讯云代金券