今天我想和大家分享的是一篇技术性更强的文章,一种在IPFs系统中快速搜索的方法。
这里有一个假设:假设想要尝试这种方法的读者已经有了自己构建的IPFs系统,并且有多个节点在Ubuntu 16操作系统上运行。
本文适合以下读者:
-读者希望在构建的IPFs系统中快速搜索内容
-在由读卡器自己构建的IPFs系统中,不仅运行公共节点,而且运行IPFs**
-在由读卡器自己构建的IPFs系统中,始终存在不时与其他节点断开连接或断开连接的节点
IPFs是一种功能强大的分布式文件分发和存储协议。IPFs虽然具有强大的功能,但也存在一些不足,如不能保证所有的节点总是相互连接的。
这一缺陷导致即使我们在整个系统刚刚建立时启动所有节点,这些节点最终也可能会彼此断开连接,失去联系,从而减慢内容搜索的速度。
在这种情况下,当系统使用**并将用户引导到**以搜索用户所需的内容时,将出现问题。
如何解决这个问题?
步骤1:获取节点的“多地址”
在每个IPFs节点中打开命令行工具并运行以下命令:
ipfs标识
你会看到这样的东西:
YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID“,“/ip6/YYYY:YYYY:YYYY:yyyyy:YYYY:YYYY/tcp/4001/ipfs/YourNodeID”,“/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/YourNodeID”,],“AgentVersion”:“go ipfs/0.4.17/”,“ProtocolVersion”:“ipfs/0.1.0”}
让我们把重点放在这里的“地址”数组上。它包含“多地址”值,这些值是外部IPFs节点用来连接到节点的数据。这些结果可能会重复,但并不重要。其中有些值包含外部IP地址,有些值包含本地IP地址。我们记录包含外部IP地址的值。如果您的系统使用IP6,请记下该IP6的“多地址”如果您的系统不使用IP6,请记下IP4的“多地址”
第2步:连接IPFs节点
现在将系统中的IPFs节点相互连接。
假设我们有一个节点a和一个节点B。如果有多个节点,也可以使用以下方法。运行以下命令:
ipfs swarm连接/ip4/BBB.BBB.BBB.BBB/tcp/4001/ipfs/NodeBID
将上述示例中的“多地址”替换为节点B的IP4“多地址”
如果节点正在使用IP6,请运行以下命令:
IPFSswarm连接/ip6/BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB/tcp/4001/ipfs/NodeBID
将上述示例中的“多地址”替换为节点B的IP6多地址。
运行命令后,将得到以下结果:
连接NodeBID成功
我们可以使用以下命令来测试这些节点是否相互连接:
ipfs群对等
在节点a上,您现在应该能够在返回的结果中看到节点B的“多地址”;同样,在节点B上,您应该能够在返回的结果中看到节点a的“多地址”
现在节点A和节点B相互连接。如果搜索的内容在B上,那么搜索应该非常快,而不是可以通过一堆节点的中介来搜索内容的公共ipf。当节点a搜索内容时,节点B将是要查询的第一个对象。
步骤3:自动化操作
我们以前的操作都是通过在命令行上手动输入指令来实现的。有没有什么方法可以使这些自动执行使节点始终相互连接?
我们可以使用Linux服务中的计时器来实现这一点。
这里我们假设我们有一个**节点,我们希望所有的IPFs节点都自动连接到这个**。对于每个要直接连接到**的节点,我们将以下两个文件添加到该节点:
第一个文件是/etc/SYSTEMd/system/gateway-connector.serice
其内容如下:
[Unit]Description=定期将此IPFS节点连接到**节点的作业[Serice]ExecStart=/home/yourUserName/go/bin/IPFS swarm connect/ip4/GGG.GGG.GGG/tcp/4001/IPFS/gatewayideEnironment=“IPFS_PATH=/IPFS”
注意:在上面的文件中,有几个值要替换为您自己的值。
在execstart中,IPFs的执行路径将替换为安装“go/”IPFs可执行文件的路径。
在execstart中,“multiaddress”替换为在**上运行“IPFs ID”得到的返回值。在这里,您还可以使用IP6的多地址。
在环境中,需要替换安装IPFs repo的路径。执行“IPFs repo stat”之后,您将得到一个返回值“repopath”,即该值。
第二个文件是/etc/SYSTEMd/system/gateway-connector.timer
[Unit]Description=定期触发gateway-connector.serice的计时器
[计时器]OnBootSec=3minOnUnitActieSec=1分钟
[安装]WantedBy=timers.target
在上面的文件中,“onbootsec”是计算机在启动后等待启动计时器的时间设置Onunitactiesec是每个“**连接器”之后等待的时间。服务“在下一个”**连接器之前执行。执行“服务”
第四步:自动操作
现在我们创建自动化文件并运行它们。
在每个节点的命令行中,添加上面列出的两个文件,然后运行以下命令:
sudo systemctl启用gateway-connector.timer
sudo systemctl start gateway-connector.timer启动**连接器
要验证我们添加的文件是否有效,请运行以下命令:
系统控制列表计时器
现在您可以看到“gateway connector”有一个值,您可以运行以下命令来验证结果:
系统控制状态**连接器
好吧,那么,我们的系统就会建立起来。
我是小西(加入社区,联系V:liandaoxixi),IPFs/filecoin社区的发起人。IPFs/filecoin是世界上最常见的去中心化存储项目。我将定期在社区分享专业信息,为IPF/filecoin粉丝建立一个双赢的学习社区。
参考:https://medium.com/pinata/how-to-keep-your-ipfs-nodes-connected-and-sure-fast-content-discoery-7d92fb23da46
文章标题:如何尽快在IPFs中搜索内容
文章链接:https://www.btchangqing.cn/18635.html
更新时间:2020年05月11日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。