第一章 - 概述

  1. 概念:分布式存储系统是大量普通 PC 服务器通过网络互联,对外作为一个整体提供存储服务
  2. 分布式存储系统的特性
    1. 可扩展:通过增加规模线性提升集群性能
    2. 低成本:基于普通 PC 构建、能够弹性伸缩集群规模
    3. 高性能:单台机器、整个集群都具备高性能
    4. 易用:好用的 API、完善的监控、运维工具、方便与其他系统集成
  3. 分布式系统的挑战,两个领域(分布式系统、数据库)
    1. 数据、状态信息的持久化
      • 数据分布:如何将数据分布在多台机器、如何读写这些机器上的数据
      • 负载均衡
        • 运行过程中如何实现自动负载均衡
        • 新增、减少服务器后如何实现自动负载均衡
        • 数据迁移过程中如何不影响已有服务
    2. 自动迁移和容错
      • 如何检测故障
      • 如何将故障服务器上的数据和服务迁移到其他服务器 (failover)
    3. 数据一致性
      • 数据如何在多副本间复制
      • 异常情况如何保证副本间数据一致性
    4. 压缩与解压
      • 如何设计合理的压缩与解压算法
      • 如何平衡压缩与解压算法节省的存储空间与 CPU 开销
  4. 分布式存储系统按数据分类
    1. 非结构化数据:文件、文本、图像、音频、视频
    2. 半结构化数据:HTML 文档,通常是自描述的、模式与内容混合在一起、不需要预定义模式
    3. 结构化数据:二维表结构,模式和内容分开存储需要预定义模式
  5. 分布式系统按处理数据类型分类
    1. 分布式文件系统
      1. 存储 BLOB 对象、定长块、大文件
      2. 内部按数据块(chunk)组织数据、每个数据块的大小大致相同
        d853e821303d3e6db0ffbd563ee37f3a.png
      3. 通常作为分布式表格系统、分布式数据库的底层存储
      4. 产品 Haystack、Google File System、Taobao File System、Amazon Elastic Block Store、
    2. 分布式键值系统:只提供基于主键的 CRUD 功能
      1. 数据模型:哈希表
      2. 产品:Taobao Tair、Amazon Dynamo、Memcached
    3. 分布式表格系统:存储半结构化数据,支持按主键的 CRUD 及按主键范围扫描,支持简单的事务、不支持多表联合查询、多表连接、子查询
    4. 分布式数据库:存储结构化数据
      • MySQL Sharding
      • Tidb