分布式系统: 用多台机器去解决一台机器解决不了的问题,比如存储或者 QPS

Distributed File System Distributed File System: Google File System, Hadoop Distributed File System

Scenario

  • 存储量越大越好
  • 机器越多越好

Service

  • Client, Server

Distributed File System

Storage

Master Slave

  • 设计简单
  • 数据库容易保持一致

怎么存?

  • 大文件(比如 100G)分块存储

Distributed File System

  • 超巨大文件(比如 10P)使用 master slave 存

Distributed File System

  • 普通文件: meta data, block
  • 大文件存储: block -> chunk
  • 多台机器超大文件: chunk server + master

如何写入文件

在 client 端把文件进行拆分,然后按份传输

Distributed File System

  • master + client + chunk server 沟通流程
  • master 维护 meta data 和 chunk server table

如何读文件

Distributed File System

  • master + client + chunk server 沟通流程

Scale

  • 单 master 通常够用, 而且架构简单
  • 需要检查在 disk 上的 chunk 是否出错: 可以使用 checksum 方法
  • avoid data loss: data replica 通常存三份, 其中一份存在较远的位置
  • 当需要数据恢复时, 向 master 索要数据信息
  • 如何知道 server 的状态: heart beat
    • 一个 master 大概管理 1000 - 2000 台机器
    • master 和 server 要每间隔几分钟进行通信, 确保对方正常运行