基本问题
为什么需要分布式?
因为需要支持百万级的文件,单机无法满足,所以需要用许多廉价机器来协作完成。
如何设计架构
按最简单的来理解。我们存一个文件,就需要知道文件在磁盘中的位置。现在我们存大文件,我们则需要知道这个文件存在哪台机器上。顺着这个思路我们就构建了简单的索引->机器的架构。如下图所示:
我们把元数据放到master机器上,然后把真正的物理文件,存放到chunk机器上。这种架构就简单的实现了索引到文件的架构。
chunk server如何存文件
正常情况下,我们的文件大小,是按需求进行创建的,需要多大空间就存多大文件。而这里需要支持的是大文件,可能是比一个磁盘还大的文件。所以不可避免需要做文件切分。而切分之后,则是通过多个文件来构成大文件。使用定长的文件块为64M,有如下好处:
- 非常好构建索引
- 查询效率高,能直接找到偏移地址进行读取
- 之所以使用比较大的64M作为chunk size,可以减少许多文件与master的交互。
chunk server如何保证文件的High Availability
分布式系统让文件提升可靠,永远只有一个办法:副本。在chunk server对每个chunk进行副本的复制。正常