分布式文件存储系统的架构设计

266 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

分布式文件存储系统的架构设计

对于文件存储系统,我们大家应该都非常熟悉,因为每天我们在使用电脑的时候,其实都是在和文件存储系统打交道,那什么是分布式文件存储系统呢?我们为什么需要一个分布式存储系统呢?

为什么需要分布式存储系统

主要原因是:待存储的文件数量多,总存储量大

单台机器的存储已经没有办法满足需求了,所以这时候考虑使用多台机器来存储;

但是对于客户端而言,它是不需要也不应该了解这些细节的,所以需要一个分布式文件系统来将这多台机器管理起来;由分布式文件系统统一对外提供接口,这样在用户看来还是一个普通的文件系统,但是容量却大了很多。

当然了,分布式文件系统还有文件安全性,高可用等优点。。。

为什么考虑自己设计?

目前已经有一些分布式文件存储系统了,比如fastdfs; 但是fastdfs社区并不是太活跃,里面其实是有很多的bug和坑的,如果真的用在生产环境里,fastdfs会有很多的问题。

而且 fastdfs是用c写的,你不可能看他的源码,很难去解决和处理他里面发生的一些故障什么的。

当然对于其他平台搭建的云服务其实也是分布式文件系统,但是——

对于第三方云服务的安全性,我们得考虑到的,一些核心的数据肯定是保存在自己这会更安心些的。

  • 好用性
  • 安全性

架构设计

分布式文件存储系统中设计三种角色:

  1. NameNode (管理元数据)
  2. BackNode (存储NameNode的冷备份数据)
  3. DataNode (存储实际文件数据)

image.png

NameNode 管理着 DataNode,DataNode 上线之后,会向 NameNode 发出注册信息;注册成功后,会持续给 NameNode 发送心跳信息,表示其可以正常工作。

NameNode 中保存的元数据是逻辑信息,它记录中哪个文件、哪份数据在哪个 DataNode 中;

而 DataNode 中记录的就是真真实实的数据了。