--- layout: post title: 分布式存储系统学习笔记 - 1. 分布式存储的概念 category: 技术 tags: BigData GFS keywords: BigData GFS Colossus google 分布式系统 分布式文件系统 云存储 description: date: 2019-11-29 author: followtry published: true --- ## 分布式存储系统的特性 1. 可扩展。系统的整体性能随集群的扩展而线性增长。 2. 低成本。构建在普通的 PC 机上。 3. 高性能。无论时对集群还是对单机,都要求高性能。 4. 易用。易用的对外接口,完善的监控和运维工具。 ## 分布式系统的挑战 1. 数据和状态信息的持久化。自动迁移,自动容错,并发读写时的数据一致性。 ### 问题和挑战 1. 数据分布 1. 如何将数据分布到多台服务器才能保证数据分布均匀? 2. 数据分布到多台服务器后如何实现跨服务器的读写操作? 2. 一致性 1. 如何将数据的多个副本复制到多台服务器上,即使异常情况,也能保证多个副本数据的一致性? 3. 容错 1. 如何检测到服务器故障? 2. 如何做到数据和服务在故障时自动迁移到集群的其他机器上。 4. 负载均衡 1. 新增服务器和集群正常运行时如何实现自动负载均衡? 2. 数据迁移的过程中,如何保证不影响已有服务? 5. 事务与并发控制 1. 如何实现分布式事务 2. 如何实现多版本并发控制 6. 易用性 1. 如何设计对外接口使得系统容易使用? 2. 如何设计监控系统并将系统的内部状态以方便的形式暴露给运维人员 7. 压缩和解压缩 1. 如何根据数据的特点合理的设计压缩的解压缩算法? 2. 如何平衡压缩算法节省的空间和消耗的 CPU 资源 ## 分布式存储分类 ### 分布式存储的数据分类 1. 结构化数据 2. 半结构化数据 3. 非结构化数据 ### 分布式存储类型 1. 分布式文件存储系统 1. 存储 Blob 数据,如 GFS,HDFS,TFS 和Hastack 2. 定长文件块存储 3. 大文件存储 2. 分布式键值存储系统 1. 即分布式的 kv 存储系统。通过 key 值可以进行 CRUD 操作 2. 典型系统如 淘宝的 Tair,Redis,Dynamo,HBase。 3. 常用一致性哈希算法作为数据分布的技术 3. 分布式表格系统 1. 用于存储半结构化数据 2. 典型系统:BigTable、MegaStore,MS 的 Azure Table Storge,DynamoDB,HBase 4. 分布式数据库 1. 单机扩展而来,用于存储结构化的数据。 2. 采用二维表,可用 Sql 查询。 3. 典型系统:Mysql分片集群、Amazon 的 RDS 和 Google 的 Spanner,阿里的 OceanBase ## 吐槽 1. 《大规模分布式存储系统》 这本书好像在有意的回避 Hadoop 生态的核心系统,如 HDFS 和 HBase,甚至都不提一下。