谷歌云大规模分布式存储系统:定义、特性与技术挑战解析
目录
1. 分布式存储系统的定义与核心特性
1.1 系统定义
1.2 核心特性
2. 主要挑战与涉及的关键技术
3. 分布式存储的种类与对比
3.1 Hadoop HDFS(大数据分布式文件系统)
3.2 OpenStack 对象存储 Swift
1. 分布式存储系统的定义与核心特性
1.1 系统定义
谷歌云大规模分布式存储系统的定义是:“分布式系统是大量普通的 PC 通过网络互连,对外提供一个整体的存储服务。” 这意味着它通过集群方式整合了多台廉价机器的存储资源。
1.2 核心特性
分布式存储系统必须具备以下四个关键特性:
| 特性 | 描述 | 价值 |
| 可扩展性 (Scalability) | 系统可以扩展到几百台的集群规模,且整体性能随集群规模增长呈线性增长。 | 保证系统能应对不断增长的数据需求。 |
| 低成本 (Low Cost) | 可构建在普通的 PC 机器上,并依靠自动容错和自动负载均衡实现自动化运维。 | 降低硬件采购和后期运维的成本。 |
| 高性能 (High Performance) | 要求针对整个集群和单台服务器都具备卓越的读写性能。 | 保证数据访问的效率和用户体验。 |
| 易用性 (Usability) | 需要对外提供易用的接口,并具备完善的运维、监控工具,方便系统集成。 | 降低开发和运维的难度。 |

2. 主要挑战与涉及的关键技术
分布式存储系统的核心挑战在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。
分布式存储涉及的关键技术主要来自分布式系统和数据库两个领域:
| 技术领域 | 解决的问题 |
| 数据分布 | 如何将数据均匀分布到多台机器上?如何实现跨服务器的读写操作? |
| 一致性 | 如何将数据的多个副本复制到多台服务器?如何在异常情况下保证副本之间的一致性? |
| 容错 | 如何检测到服务器故障?如何自动将故障机器上的数据和服务迁移到其他机器上? |
| 负载均衡 | 新增服务器和集群正常运行过程中如何实现自动负载均衡?数据迁移过程中如何保证不影响现有服务? |
| 事务和并发控制 | 如何设计易用的对外接口?如何设计监控系统并以方便的形式暴露内部状态给运维人员? |
| 压缩、解压缩算法 | 如何根据数据的特点设计合理的压缩算法,平衡空间存储与 CPU 资源消耗? |

3. 分布式存储的种类与对比
3.1 Hadoop HDFS(大数据分布式文件系统)
Hadoop 分布式文件系统(HDFS)是一个分布式文件系统,其设计目标是满足商用硬件上高数据吞吐量对大数据集访问的需求。
-
设计目标:容错、可扩展性、高效性和可靠性。
-
核心机制:仿效谷歌文件系统(GFS)。数据以复制的方式存储在相同节点上,以实现将处理任务迁移到物理节点(保存数据)的方式,来降低网络 I/O。
-
部署:它是 Apache Hadoop 的一个子项目。

3.2 OpenStack 对象存储 Swift
OpenStack Swift 提供了一个类似 Amazon S3 的对象存储服务,主要特点如下:
-
对象特征:所有存储对象都有自身的元数据和一个 URL。
-
高可用:对象在尽可能唯一的区域复制 3 次。
-
交互方式:开发者通过 RESTful HTTP API 与对象存储系统进行交互。
-
扩展性:集群可通过增加外部节点进行无宕机扩展,且数据无需迁移到全新的存储系统。故障节点和磁盘可无宕机调换。
-
硬件要求:可在标准硬件上运行。
