什么是单点故障 (SPOF,Single Point of Failure)?从定义上看单点故障,是指由电路或系统的设计、实施或配置缺陷造成的潜在风险。也就是说,SPOF 是指可能导致整个系统停止运行的一种故障。
什么是数据存储系统中的单点故障?
数据存储系统中的单点故障可以理解为系统的一个元素、组件或部分发生故障,其故障会导致整个系统瘫痪。通常有几种情况:
假设一个存储设备只有一个电源,这是单点故障。如果电源出现故障,整个设备将关闭并且数据将无法访问。
同样,如果只有一个存储头单元/存储控制器,它的故障将破坏整个数据存储系统。
如果数据存储系统没有 RAID 或擦除编码,那么也可能发生单点故障。
如果驱动器发生故障,则无法访问该特定驱动器中的数据,同样也会导致中断。
云存储系统中为何存在单点故障?
听起来数据存储系统的单点故障通常发生于其硬件设备。然而,对于云存储/分布式存储来说,单点故障是否依旧存在?造成的影响又有多严重呢?
中心化的云存储服务商往往被曝出单机房故障隐患。这是因为云存储服务跟云主机服务一样都是集中于个别或部分机房,并且在使用云存储服务时还得选择使用其中一个数据中心。如果数据所在数据中心出现电力或者网络故障,就会影响正常服务。
那么如何解决中心化云服务商单点故障频发的问题呢?解决单点故障的方法就是“冗余”。关键服务器要冗余成集群,网络连接要冗余成多通道,存储要做镜像或者 RAID 冗余,整个数据中心都要通过容灾和双活实现冗余。
然后不可否认的是,头部中心化云服务商占据了云存储市场,因此其互相之间也存在技术“城墙”和商业壁垒,用户的数据难以跨“云”实现复制。各自为政的数据中心也不允许数据在不同的云之间进行快照或者复制。因此在中心化云存储的商业模式下,用户使用的“云”出现故障,另一个“云”也无法及时的接管和处理。因为单点故障所带来的风险依旧只中心化地处理和控制,用户只能依靠自己选择的云不要出现故障问题,而没有其他更可靠的解决方案。
去中心化云存储如何解决单点故障
去中心化云存储因其天然的分布式架构,很大程度上避免了中心化的单点故障问题。在目前的分布式存储系统中,以 Filecoin、Arweave、Storj 等为例,有闲置存储资源的用户都可以成为存储网络中的一员,通过出租存储空间以获得一定的激励。项目各具特色,但是面临单点故障问题上,除了分布式的天然优势,并未展示出更多的创新技术。比如采用点对点的存储订单服务是,防止单点故障需要网络主动与多个存储提供商达成交易来实现多副本。
CESS 作为一个安全、高效、开源、可扩展的去中心化云存储网络,其分布式的结构天然就避免了单点故障问题,而 CESS 无论是网络还是存储都是分布式的。与其他的去中心化存储项目相比,CESS 的不同之处在于引入了一种新的存储证明机制 — — 多副本可恢复存储证明机制(PoDR²)。我们从两个方面来解析该存储证明在应对单点故障和灾备能力上的优势:
- 多副本
PoDR² 是一种零信任的数据备份和恢复证明算法。存储数据通过加密处理并切片后随机发送到若干个矿工节点,在 PoDR² 机制下,默认生成三个副本。当然系统也支持用户定制生产副本的数量。利用同态签名机制,确保存储矿工如实存储了 CESS 系统给定的或者用户指定的数据副本数量。当然,传统的中心化云存储也支持多次备份,但其备份数量最终依旧是中心化存储和控制,并不能通过多副本来大幅提高安全性。
- 可恢复
我们在前文提出“冗余”是解决单点故障的方法,其背后其实是复制和恢复。通过 CESS 的 PoDR² 机制,在对数据进行多副本处理后,利用冗余编码,实现当每份数据的任意 2 个块损坏后都能通过冗余编码恢复。紧接着 CESS 系统将为每个数据段生成辅助后期数据存储证明的验证参数,用于后期的复制证明、时空证明和 PoDR² 存储证明。在此机制中,CESS 链会将副本的数据段随机分给不同的存储矿工们,这样即使某个存储矿工遭遇数据被删除,遗失,黑客攻击,PoDR² 能从其他存储矿工上提取数据来提供检索和恢复,以最大程度保护用户数据存储安全。
值得一提的是,PoDR² 机制下 CESS 系统将周期性检查存储矿工上的数据(即检查和证明存储节点存储的数据是否有效、是否存在或修改),确保数据的真实性和可用性。
跳出单一的单点故障的问题,背后是体现出各个系统如何提前预判风险并进行机制规避、提供数据灾备解决方案的能力。从数据可用性的角度来看,CESS 的多副本可恢复存储证明机制最大程度确保了数据可用性。而从安全的角度来看,CESS 将数据切片、冗余,然后分散到存储矿工上,实现了全局数据冗余和可恢复。CESS 真正解决了去中心化云存储系统所面临的单点故障,为行业提供了基于数据持有性的多副本可恢复存储证明机制(PoDR²),并实现了远超同类项目的编码和解码的效率。用户既能安全地存储数据,又能灵活高效的存取数据。