理清这些关键技术,最好的方式是理解这些关键技术因何而生的,是为了解决什么问题。换句话说,如果要你自己手动实现一个分布式存储系统会如何设计。这里我们暂且不关心是什么块存储、对象存储还是文件存储。我们从设计一个分布式存储系统开始,逐步介绍涉及的关键技术。
首先想一个问题,为什么需要分布式存储,其中最主要的原因之一就是解决数据在单机硬盘存不下的问题。如果不用分布式存储你会怎么办?使用工具把文件分割成一个个小文件,存到其他机器即可,并做好记录,下次读的时候再查看记录按顺序或者指定读取第几个小文件把内容合并,这其实就实现了手工式的分布式存储:)。另一个原因就是解决数据单机处理不了的问题,比如就统计下文件中单词出现次数,数据太大,内存有限,算不了,怎么办?把数据分成一个个小文件,拷到其他机器,每个机器只处理每一个小文件,最终合并结果即可,这其实就是手工式的mapreduce,同样需要分布式存储。