概述
定义
分布式存储系统是将为数众多的普通计算机或服务器通过网络进行连接,同时对外提供一个整体的存储服务
特性
- 高性能
- 可扩展性
- 低成本
- 易用性
技术挑战
- 数据和状态信息的持久化
- 数据的自动迁移
- 系统的自动容错
- 并发读写的数据一致性
- ......
分布式存储分类
- 结构化数据
- 非结构化数据:包括文本、图片、图像、音频和视频信息等
- 半结构化数据
分布式存储系统分类
-
分布式文件系统 -- 非结构化数据
分布式文件系统用来存储三种类型数据:
Blob对象、定长块以及大文件
-
分布式键值系统 -- 半结构化数据
一致性散列是分布式键值系统中常用的数据分布技术
-
分布式表系统 -- 半结构化数据
分布式表系统以表格为单位组织数据
-
分布式数据库 -- 结构化数据
分布式数据库采用二维表组织数据
NoSQL
发展历程
20世纪末的代表
- SAN:通过将磁盘存储系统和服务器直接相连的方式提供一个易扩展。高可靠的存储环境,高可靠的光纤通道交换机和光纤通道网络协议保证了各个设备间链接的可靠性和高效性
- NAS:通过基于TCP/IP的各种上层应用在各工作站和服务器之间进行文件访问,直接在工作站客户端和NAS文件共享设备之间建立连接,NAS隐藏了文件系统的底层实现
- GPFS:一个并行的磁盘文件系统
- GFS:Google为大规模分布式数据密集型应用设计的可扩展性的分布式文件系统
- HDFS:分布式计算中数据存储管理的基础
21世纪代表
-
Cassandra:一套开源分布式NoSQL数据库系统
-
HBase:列存储数据库
-
MongoDB:文档型数据库
-
DynamoDB:Amazon的一个分布式存储引擎,是一个经典的分布式Kye-Value存储系统
特点:去中心化、高可用性、高可扩展性
文件存储
单机文件系统
从结构上看,它包括四个模块
- 引导块
- 超级块
- 索引节点
- 数据块
网络文件系统
-
NFS(network file system,网络文件系统)
设计目标:提供跨平台的文件共享系统
-
AFS(Andrew file system),分布式文件系统
目标:支持5000~~10000个节点的集群,扩展性是首要考虑因素
AFS具有更好的扩展性
并行文件系统
- 以追求高计算能力为目的的多处理结构的计算机
- 一个并行任务由多个协同工作的进程组成,每个进程可以运行在不同的节点上
分布式文件系统
GFS设计目标是为GB量级以上的大文件提供高的I/O访问带宽,而不是低访问延迟
高通量文件系统
为大型数据中心设计的文件系统
从单机存储系统到分布式存储系统
单机存储系统
-
硬件基础
硬件存储就是散列表、B树等数据结构在机械硬盘、SSD等持久化介质上的实现
-
存储引擎
存储引擎直接决定了存储系统能够提供的性能和功能
-
数据模型
存储系统的数据模型主要分为三类:文件、关系、键值系统
分布式存储系统
-
性能分析
-
数据分布
将数据分布到多个节点,并在多个节点之间实现负载均衡,方式主要有两种:
1、散列分布2、顺序分布
-
复制
-
容错
-
可扩展性
-
分布性协议
分布式协议
1、两阶段提交协议(Two-Phase Commit,2PC)
经常用来实现分布式事务,以保证跨多个节点操作的原子性
主要有两阶段组成
- 阶段1: 请求阶段(Prepare Phase)
- 阶段2: 提交阶段(Commit Phase)
两阶段提交协议是阻塞协议,执行过程中需要锁住其他更新且不能容错,大多数分布式存储系统都放弃了对分布式事务的支持
2、Paxos 协议用于解决多个节点之间的一致性问题