进入IPFS的存储世界

进入IPFS的存储世界

IPFS – 星际文件系统非常适合以分散的方式存储数据,它是在区块链空间中存储数据的最常用工具之一。在区块链中存储数据价格昂贵、速度又慢,而在IPFS中存储是免费的,同时速度又非常快。因为在IPFS中,不允许通过哈希存储重复的数据,如果有哈希重复的数据,将会返回相同的哈希。

IPFS目前来看,运行的非常好。在IPFS上添加的数据,将保留在全球的节点网络中。任何拥有哈希的人都可以访问数据(注意:除非你使用的是私有IPFS节点,否则IPFS上的所有数据都是公开的),并且不会有重复的数据。此时,你可能会问:“我可不可以通过IPFS更改完全分散的数据库?”

虽然IPFS非常适合存储数据,但如果IPFS节点出现故障,它并不能完全保证数据可以使用。例如:“启动IPFS节点运行了一个月,在其中存储有非常重要的数据,但是你的机器坏了。这个时候你会感到非常的庆幸,因为IPFS是一个公开的网络,所以你认为其他人会存有你的数据。” 其实不完全是这样,IPFS从不保证你的数据一直可用。因为如果其他节点对你存储的数据不感兴趣的话,就不会有人存储。在这样的情况下,数据就会丢失,因为你的数据没有存储在其它节点上(在Filecoin没有出现时)。

这就是Filecoin之所以出现的原因。通过Filecoin Token激励其他节点,存储过去不感兴趣的数据。以防IPFS私有的节点出现故障,避免私人数据丢失,同时会收取少量费用。Filecoin非常的棒,但目前还没有上线…… Filecoin正在开发中。

在Filecoin出现之前,我们必须通过当前方案解决问题,其中包括:

  1. 运行多个IPFS节点
  2. 备份〜/ .ipfs文件夹
  3. 运行IPFS集群
  4. 使用其他方式

当然还有有更多的解决方案,在这里我主要想谈的是Ipfs集群。

Ipfs-cluster(IPFS集群)允许运行多个节点,每个节点都会复制数据,并通过使用RAFT共识使每一个节点保持同步。

那么,保持系统安全需要多少个节点?

一般情况下,单独的节点可能会出现断网掉线的问题。假设我们有t个节点,则需要至少t + 1个节点保持系统运行。简单来说: 它只是意味着,即使所有其他节点都关闭,也应该至少有一个节点处于正常的运行的状态。因此,如果你认为有5个节点的情况下,不会出现同时关闭的风险,那么你的风险因子t为4。

IPFS集群使用IPFS节点存储数据,并且构建在标准IPFS之上。这意味着,使用集群不会存在运行不同的IPFS节点;而是在使用IPFS时,将运行的完全相同的节点。IPFS集群有一个代理节点,用于存储所有pin请求,得以实现RAFT算法(基于Leader的方法)。

其思想是,将与处理同步和备份的IPFS群集代理节点进行交互,以便你可以将其视为IPFS节点。IPFS-集群节点在彼此之间交换消息,例如:确定哈希的请求、或发送消息以了解节点是否已关闭。这种方法的最大优点之一是,一旦节点恢复,它就可以收到遗漏的所有消息,并立即更新。

进入IPFS的存储世界

图1 IPFS集群架构

虽然,IPFS在很多方面都非常好(甚至还有回购),但它也存在一些问题。随着IPFS连接的节点越来越多,在内存使用方面会非常紧张 – 另外包括它消耗的带宽量!对于IPFS节点来说,1 GB的内存是不够用的,而一旦IPFS守护进程使用的内存超过1GB,操作系统(Ubuntu)就会对他进行Killed(销毁)。最终,你看到的指示所有内容都将被“Killed”,这听起来是毁灭性的。如果你的应用程序全天依赖于IPFS运行,那么你需要一台具有更多内存和带宽容量的设备。当然, 关于这个问题还有其他的解决方案。(注意:这是IPFS节点,而不是IPFS群集的问题)

守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。

限制IPFS连接的节点数量,是解决这个问题方法,这个可以通过以下两种方式完成:

1、手动:通过更改配置文件,禁用MDNS发现、或将间隔设置得很高(不推荐,这样基本上将你的节点与网络的其余部分隔离。并且存在一个问题,其他IPFS节点,从你的节点获取内容的可能性将变得非常低)。

2、通过使用IPFS连接管理器来限制节点建立的连接数。这有三个属性:

  • 最大连接数:节点允许的最大连接数,然后开始删除连接。
  • 最小连接数:节点将尝试维护的最小连接数。
  • 间隔:检查最大和最小约束的时间量,例如:如果它是一分钟,那么您的节点每分钟将确保Min≤对等体数量(ipfs群集对等体|wc-l)≤Max连接 。

发表评论