关于分布式存储,你需要知道的真相

 公司新闻     |      2021-07-08

  许多人可能熟悉分布式存储,但大多数人对其概念或知识点过于分散。读了很多书之后,他们只能看到树,却看不到森林。在学习了很多之后,他们只能“知道是什么,但不知道为什么”。因此,有必要对分布式存储的概念、问题和矛盾进行分析和阐释。

  为什么需要分布式存储?

  很多人可能从来没有考虑过这个问题。为什么我们需要分布式存储?事实上,它“被迫”使用分布式存储。因为随着互联网的飞速发展,应用越来越多,用户越来越多,数据的几何增长,海量数据的存储给本地存储带来了巨大的压力,所以存储系统已经处于崩溃的边缘,存储系统的压力必须通过其他方式来分配,分布式存储和分布式文件系统应运而生。

  实际上,如果可能,应该是尽量不使用分布式的,因为这会增加系统的复杂度和管理难度,然而,虽然是这样,但这些终归是可以通过其他技术来解决,而如果不使用分布式,系统的可用性、稳定性都无法保证,更谈不上系统的高性能了。因此,说分布式是被迫使用的,一点也不夸张。

  不难发现,分布式的目的就在于追求高性能与高可用这两个特性。分布式系统中遇到的各种理论、技术以及设计方案,其本质上就是为了解决这两个关键性问题而已。在想清楚了这个观点之后,那所谓的分布式也并没有这么高大上,深不可测。它无非是提出一些技术方法来解决遇到的一堆问题。

  如何保证分布式存储的高性能与高可用

  那么问题来了,如何保证分布式存储系统的高性能与高可用性呢?

  大家可能想到的是,除了传统架构里面的备份、Hot Standby、双活、多活这种架构之外,对于保证分布式存储系统的高可靠和高可用,数据在系统中一般存储多个副本。当某个存储节点出故障时,系统能够自动将服务切换到其他的副本,从而实现自动容错。分布式存储系统通过复制协议将数据同步到多个存储节点,并确保多个副本之间的数据一致性。同一份数据有多个副本,仅有一个为主副本 Primary,其他的副本为备份副本 Backup,数据从主副本复制到备份副本,采用最终一致性来保证数据和事物的完整。

  但这些措施可能只是治标不治本,只能满足一般的要求和不时之需。

  而实际上,高性能与高可用是矛盾的,比如要设计一个分布式存储系统,出于对性能的考虑,记录数据时先写一个份数据到某个机器上并立即返回,然后异步发起多个数据备份过程(副本)。这种设计的性能最好,但存在“容错性”的风险,即写完数据后,目标机器立即发生故障,会导致数据丢失!如果同时写多个副本,每个副本写成功以后再返回,则又导致性能下降,因为这个过程取决于最慢的那台机器的性能。这就是高性能与高可用之间的矛盾。

  为了从根本上克服这些矛盾,解决分布式存储的高性能和高可用性问题,优化和改进分布式文件系统和分布式存储系统的体系结构,从源头上解决这些问题更为有效。

  然而,要优化和完善分布式文件系统和分布式存储系统的体系结构,我们必须对分布式文件系统和分布式存储有更深入的了解,但是很多人不知道从哪里学习这些知识。