今天要和大家分享的是一篇技术性比较强的文章,一种在IPFS系统中快速搜索内容的方法。 这里有一个假设:假设希望尝试这个方法的读者已经有了自己搭建的一个IPFS系统并且有多个节点,这些节点都运行在Ubuntu 16操作系统上。 这篇文章适合的读者有下列这些: - 读者希望自己在已搭建的IPFS系统中能快速地搜索内容 - 读者自己搭建的IPFS系统中不仅运行着普通节点还运行了IPFS网关 - 读者自己搭建的IPFS系统中总有节点时不时和其它节点断开或失联 IPFS是一个强大的去中心化文件分发和存储协议,尽管有着强大的功能,但IPFS也有些缺憾,比如它无法保证所有的节点之间总是互联。 这个缺憾就导致即便我们在整个系统刚搭建好时把所有的节点都启动了,这些节点最终有可能互相断开失联,从而使内容搜索的速度变慢。 在这种情况下,当系统使用了网关,并且把用户引导给网关让网关来给用户搜索所需要的内容时就会产生问题-----如果网关不是直接和所有的节点相联,则用户搜索的内容要等很久才能被发现。 如何解决这个问题呢? 第一步:获取节点的“multiAddresses” 在每一个IPFS节点中打开命令行工具,运行下列命令: ipfs ID 你会看到类似下面的结果: {ID: YourNODEID,PublicKey: YourPublicKey,Addresses: [/ip4/127.0.0.1/TCP/4001/ipfs/YourNodeID,/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/YourNodeID,/ip6/::1/tcp/4001/ipfs/YourNodeID,/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID,/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID,/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY: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} 我们重点关注这里的“Addresses”数组。它包含了“multiAddress”值,这些值是外部的IPFS节点用来连接节点使用的数据。这些结果有可能会有重复,但这没关系。这些值中有些包含了外部IP地址,有些包含了本地IP地址,我们记录下那些包含外部IP地址的值。如果你的系统使用的是IPv6,记下那个IPv6的“multiAddress”,如果你的系统没有使用IPv6,就记下IPv4的“multiAddress”。 第二步:连接你的IPFS节点 现在把系统中的IPFS节点互相连接起来。 假设我们有一个节点A和一个节点B,如果有多个节点,下列方法也适用。运行下列命令: ipfs swarm conect /ip4/BBB.BBB.BBB.BBB/tcp/4001/ipfs/NodeBID 将上例中的“multiAddress”用节点B的IPv4 “multiAddress”替换。 如果节点使用的是IPv6,运行下列命令: ipfs swarm conect /ip6/BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB/tcp/4001/ipfs/NodeBID (责任编辑:admin) |