请选择 进入手机版 | 继续访问电脑版
查看: 450|回复: 0

[区块链技术] IPFS企业落地之前的问题

[复制链接]

该用户从未签到

10

主题

10

帖子

170

积分

崭露锋芒

Rank: 3

积分
170
发表于 2018-12-14 17:25:05 | 显示全部楼层 |阅读模式

  实体经济叫好不叫座,炒币又跌跌不停。但广大有志青年,还是一致看好IPFS——毕竟它是一个巨大的IP,必须好好利用它,榨干它的价值。我们当然也是很看好IPFS,不然也不会投入巨大的人力物力财力从事这方面的研发。可是,如果一味地认为它浑身都散发着耀眼的光芒,优点远远大于缺点,觉得做这块是一个稳赚不赔的生意,那不仅不客观,对自己不利,也对整个IPFS产业发展不利。客观地说,IPFS以及关联的技术,技术上存在着许多问题。
  但换个思路来讲,这些也不是问题。不是有成千上万的工程师会投入这个领域吗?许多问题一定会得到解决;许多问题可能不会被正面解决,但会被聪明地绕过,从用户的角度来说,也算得到了解决。大家对IPFS关注度的增加,会进一步推动生态系统的发展。很多时候,一个新系统要取代旧的系统,有一个核心优点就够了。正视问题,才能让IPFS的应用真正落地。
  在Filecoin迟迟不上线之际,除了有许多去中心化存储的链出来之外,也有不少人准备把IPFS用于企业应用。去中心化的优势,足以让人动心。但真的把IPFS用于企业业务,我们必须重视如下的问题。
  1. 访问接口
  IPFS提供了HTTP API、CLI命令、以及GO语言和JS的调用库。如果要使用IPFS的话,就得按照它提供的这些接口来进行调用。从开发人员的角度讲,可能比较实用的是HTTP API。毫无疑问,企业业务中对数据存储部分的代码,必须按照这些接口来进行重写。这对IPFS的前期推广会造成一定的阻碍。如果企业都认识到IPFS的价值,愿意为之适配自己的业务系统,这个问题就不会存在。可以参考现在如日中天的S3对象接口。虽然S3是AWS自己特有的接口,但大量的和AWS毫无关系的业务系统(包括蓝光备份系统等),都支持S3了,让S3成为事实的工业标准。
  如果企业不想变更自己的访问接口怎么办?其实也好解决,就是做一个为业务匹配的网关。这样接口代码不用做任何修改。缺点是牺牲部分去中心化的优势。好处是可以快速上线。
  2. 业务逻辑
  是否解决了接口的问题,企业应用就可以直接上了呢?其实接口问题相对还好说,业务逻辑问题更为关键。以一个简单的视频监控应用为例。为了方便,在架构设计的时候,可能会直接依赖于现有文件系统做许多规划——每个摄像头的文件都放在一个大文件夹里,摄像头ID为文件夹的名字;文件夹内部,又按照日期分子文件夹,子文件夹的名字就是对应的日期;每5分钟保存一个文件,文件名直接就是时间戳。简而言之,就相当于把最关键的元数据直接保存在文件名里面了。检索视频和回访录像的时候,需要依赖于文件系统的定位和查找功能。但在IPFS,保存成功得到的是一个个HASH值,怎么根据HASH值来查找定位视频内容呢?虽然可以做视频元数据和HASH之间的映射,通过数据库或者索引文件来实现,但相关的程序逻辑,和之前的系统相比,肯定大不一样。这种业务逻辑的改变,是目前推广IPFS的重大障碍。
  不过,因为互联网公司的迅速崛起以及对象接口的流行,许多新的系统,在设计上面已经摆脱了对传统文件系统的依赖。数据库里面直接保存了相关的元数据,硬盘上的文件名,就是一个随机的ID,已经不用来反映其本身的相关属性,查找文件也有专门的索引。这样的应用迁移到IPFS相对容易。当然,这种依赖于数据库的技术手段,本身是中心化的。相当于实现一个管理中心化,数据分布去中心化的应用。但这样做,也没有什么不好的,毕竟它有实用价值。不可能把大量的元数据都放在链上,因为查找的低效以及对空间的浪费是企业不太能够忍受的。
  3. 数据安全
  数据安全是一个非常大的概念。大多数人会认为数据可用性、数据防篡改、网络安全等都属于数据安全。其实它们的技术特点和防范原理是完全不同的,在英文中也是不同的单词。就按照大家的习惯,在这里一起说算了。
  数据可用性(Data Availability)是指发生了各种物理上的故障,系统仍然可用,数据不会丢失,一般通过RAID、副本、纠删码等技术实现。IPFS本身是不对可用性做保障的。因为添加的文件,默认只会放到本地节点。其他节点访问了相关的文件,才会在自己的机器上面存一份。但对于企业应用来说,数据一经写入,一般来说就需要有冗余,以防止各种意外情况导致数据损坏。从白皮书来看,Filecoin会使用副本或者纠删码来实现相关的功能。其他基于存储的区块链项目,也或多或少要涉及到这块才有价值。如果使用原生IPFS,那基于ipfs-cluster可以实现数据的自动冗余,但每个节点都存一份数据开销的确非常大。因此,基于IPFS提高数据可靠性方面的努力,是反映IPFS方案厂商技术实力的重要方面。
  传统存储会用备份、快照等手段来防止数据的篡改。如果文件被误删或者恶意修改,可以通过相关技术手段来恢复。IPFS保存的文件,是通过HASH来访问的。文件内容做了任何修改,HASH会发生变化。从这个角度来讲,自然是可以做到防篡改了。只要不在每个节点上面删除文件,IPFS的内在机制也可以把每个历史版本保存下来的。但要把此类功能呈现给企业客户,需要把原始的HASH记录下来,同时有一系列的机制来完成数据的监测和恢复等操作。这些不是IPFS自身需要考虑的范畴,但基于IPFS提供企业级存储方案,一定得把它考虑清楚。
  至于网络安全,是所有电脑系统需要注意的问题,这个就不再赘述了。补充一下,无论觉得系统多么安全,都得考虑总有漏洞被利用——没有万无一失的计算机系统。所以,对于企业数据,一律建议加密保存和传输。当然,这个过程,IPFS不负责,需要应用或者相关的框架引擎来实现对应的逻辑。
  4. I/O性能
  读写性能是存储的关键指标。在企业级存储领域,IPFS的性能并不理想。因为它要把大文件拆分成一个个block(默认为256KB)存在本地硬盘中,这个过程给IPFS带来了许多好处,同时也带来了性能上的不利影响。本来应该在硬盘上连续存放的文件,被拆成一个个碎片进行保存,增加了磁盘的读写次数,降低了整体IOPS。相对于普通的存储系统,IPFS对CPU的利用率也要高不少,这对性能的影响也不小。
  解决这个问题的方法也较多。简单的是提升硬件配置,CPU选用频率高一点的,硬盘可以适当配置SSD。但这会增加成本压力,与IPFS给人的廉价存储的印象形成反差。另外一个方法就是做系统优化,比如增加block的大小,或者基于IPFS的代码做适当的修改。企业存储只需要用到IPFS的部分功能,甚至单独把libp2p拿出来用也可以,对原生代码就行修改,并不是一件很坏的事情。还有就是对操作系统底层(主要是Linux)做优化,提高本地文件系统的读写性能,也顺便把IPFS的性能给提升了。提到系统优化,在这里就再次推荐储迅做的StorSwift OS,基于CentOS,数十位工程师,历经数年的时间打造,使用Linux构建存储系统的坑,基本都得到了解决。
  IPFS(www.ipfsfirst.com)的热浪刚袭来。面临的问题会有许多,但只要持之以恒,我相信都能得到解决。以上仅仅是针对IPFS在企业存储领域落地的一些思考,有片面之处,还请大家指出。如果直接把IPFS用于互联网应用,部分问题仍然是适用的,但也有一些不同的关注点,以后有空再讨论。

楼主热帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则