什么是分布式存储?

Posted 计成科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是分布式存储?相关的知识,希望对你有一定的参考价值。



分布式系统是一个古老而宽泛的话题,而近几年因为 “大数据” 概念的兴起,又焕发出了新的青春与活力。除此之外,分布式系统也是一门理论模型与工程技法并重的学科内容。相比于机器学习这样的研究方向,学习分布式系统的朋友往往会感觉:“入门容易,深入难”。

总的来说,分布式系统要做的任务就是把多台机器有机的组合、连接起来,让其协同完成一件任务,可以是计算任务,也可以是存储任务。如果一定要给近些年的分布式系统研究做一个分类的话,我个人认为大概可以包括三大部分:

1. 分布式存储系统
2. 分布式计算系统
3. 分布式管理系统


今天我们主要了解一下分布式存储系统:

分布式存储系统是一个非常古老的话题,同时也是分布式系统里最难,最复杂,涉及面最广的问题。往细了分,分布式存储系统大概可以分为四个子方向:

1. 结构化存储
2. 非结构化存储
3. 半结构化存储
4. In-memory 存储


除了这四个子方向之外,分布式存储系统还有一系列的理论、算法、技术作为支撑:例如 Paxos, CAP, ConsistentHash, Timing (时钟),  2PC, 3PC 等等。现在,我们先来看看上述四个子方向大致都在干些什么。


结构化存储(structured storage systems)的历史非常古老,典型的场景就是事务处理系统或者关系型数据库(RDBMS)。传统的结构化存储都是从单机做起的,比如大家耳熟能详的  mysql。有句话说:MySQL的成长史就是互联网的成长史。这一点也不为过。除了 MySQL 之外,PostgreSQL 也是近几年来势头非常强劲的一个 RDBMS.  我们发现,传统的结构化存储系统强调的是:(1)结构化的数据(例如关系表)。(2)强一致性 (例如,银行系统,电商系统等场景)(3)随机访问(索引,增删查改,SQL 语言)。然而,正是由于这些性质和限制,结构化存储系统的可扩展性通常都不是很好,这在一定程度上限制了结构化存储在大数据环境下的表现。)


非结构化存储 (no-structed storage systems). 和结构化存储不同的是,非结构化存储强调的是高可扩展性,典型的系统就是分布式文件系统。分布式文件系统也是一个古老的研究话题,比如 70 年代的 Xerox Alto, 80 年代的 NFS, AFS, 90 年代 xFS 等等。然而,这些早期的分布式文件系统只是起到了网络磁盘的作用, 其最大的问题就是不支持 容错 (fault tolerance)和 错误恢复 (fault recovery)。


半结构化存储 (semi-structure storage systems)的提出便是为了解决结非构化存储系统随机访问性能差的问题。我们通常会听到一些流行的名词,比如 NoSQL, Key-Value Store,  甚至包括对象存储,例如 protobuf,thrift 等等。这些都属于半结构化存储研究的领域,其中以 NoSQL 近几年的发展势头尤为强劲。NoSQL 系统既有分布式文件系统所具有的可扩展性,又有结构化存储系统的随机访问能力 (例如随机update, read 操作),系统在设计时通常选择简单键值(K-V)进行存储,抛弃了传统 RDBMS 里复杂 SQL 查询以及 ACID 事务。这样做可以换取系统最大的限度的可扩展性和灵活性。在 NoSQL 里比较有名系统包括:Google 的 Bigtable, Amazon 的 Dynamo, 以及开源界大名鼎鼎的 HBase,Cassandra 等.  通常这些 NoSQL 系统底层都是基于比较成熟的存储引擎,比如 Bigtable 就是基于 LevelDB ( jeff dean 写的,非常好的 C++ 源码教程) ,底层数据结构采用 LSM-Tree. 除了 LSM-Tree 之外 B-Tree (B+Tree)也是很成熟的存储引擎数据结构。


In-memory 存储。随着业务的并发越来越高,存储系统对低延迟的要求也越来越高。同时由于摩尔定律以及内存的价格不断下降,基于内存的存储系统也开始普及。In-memory 存储顾名思义就是将数据存储在内存中, 从而获得读写的高性能。比较有名的系统包括 memcahed ,以及 Redis。这些基于 K-V 键值系统的主要目的是为基于磁盘的存储系统做 cache。还有一些偏向于内存计算的系统,比如可以追溯到普林斯顿 Kai Lee 教授早期的研究工作 distributed shared memory ( DSM ),斯坦福的 RamCloud, 以及比较火的基于 lineage 技术的 tachyon (Alluxio) 项目(Spark生态系统子项目)等等。


 什么是分布式存储?

有话要说

以上是关于什么是分布式存储?的主要内容,如果未能解决你的问题,请参考以下文章

分布式存储的发展及未来格局

什么是哈希?哈希算法原理解释,什么是分布式存储(视频)

盘古开源解析:为什么说POD数据交互证明是分布式存储的一个技术突破?

HDFSCephGFSGPFSSwift 等分布式存储技术的特点和适用场景是什么?

分布式存储系统架构设计,应该遵循什么样的原则?

分布式存储凭什么来挑战互联网巨头?