前言
笔者最近在学习,了解当前流行的若干分布式存储系统。为什么这么做呢?因为笔者比较了解HDFS,但是对其它同等类型的存储系统知道的不多,想借此学习比较一番,希望能够做到触类旁通吧。本文可能不会阐述的很具体,想到哪就说到哪吧。
按照元数据存储结构划分
数据存储必然涉及到其元数据的存储管理,以什么样的方式来管理这些元数据就成为了划分的区别。按照这个划分,能够划分出以下3类:
- 集中式元数据管理。比如说典型的,HDFS。NameNode完全中心管理式的。优势是易于管理,路径查找什么的也很方便。弊端也很明显,扩展性问题,单点瓶颈问题。
- 分布式元数据管理。分布式元数据与集中式的相比,由单点变为多点,扩展性会变好,但是会带来一个问题,元数据管理节点间的数据同步问题。当然为了简单化这其中的数据同步,我们可以让每个节点管理部分数据。
- 无原数据管理。有人可能会好奇,还有这种方式?是的,GlusterFS用的就是这种模式。它的元数据和实际数据是存在一起的。它用的是hash算法来定位文件的位置的,输入的参数就是文件路径信息。那这种方式看起来很棒啊,扩展性相当好呢。但是目录树的查询就显得不太方便了,比如说列出扫描某个目录什么的,还有或者是深目录的查询,里面会涉及到多次的文件定位。
所以其实没用绝对的好坏,只有适不适合我们使用的存储系统。
数据定位方式
这里提到的数据定位方式其实是一个比较大的概念,它主要包含两层含义:
- 新写的文件,应该创建在哪里