【董天一】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: 點對點的聊天工具
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章