如何尽快在IPFs中搜索内容

今天我想和大家分享的是一篇技术性更强的文章,一种在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

发布者:8809,转请注明出处:https://www.btchangqing.cn/18635.html

发表评论

登录后才能评论
商务微信
商务微信
客服QQ
分享本页
返回顶部