一、前言
二、几种分布式存储的架构
参考 一篇文章讲透分布式存储
1. 中间控制节点架构 HDFS
- 由谷歌提出
- 通过廉价的服务器来提供大规模,高并发场景下的web访问问题
- 服务器分为两种类型:namenode和datanode
- 可以横向扩展datanode的数量来增加承载能力,实现动态横向扩展
1.1. namenode
- 储存管理数据,比如文件在哪个datanode
- 一般使用主备集群部署
1.2. datanode
- 储存实际数据
- 一般由大量节点构成一个集群
2. 完全无中心架构——计算模式 Ceph
- 没有中心节点,可以避免中心节点的性能瓶颈
- 存在三个服务:Mon、OSD、MDS
- 访问流程为客户端从Mon服务拉取存储资源布局信息,然后根据布局信息和写入数据的名称等信息计算出期望数据的位置,然后和该位置直接通信
2.1. Mon服务
- 用于维护存储系统的硬件逻辑关系,主要是服务器和硬盘等在线信息
- 通过集群保证服务可用性
2.2. OSD服务
- 用于实现对磁盘管理、实现真正的数据读写
- 一个磁盘对应一个OSD服务
3. 完全无中心架构——一致性哈希 Swift
- 将设备做成一个哈希环,根据数据名称计算出的哈希值映射到哈希环的某个位置实现数据定位
3.1. 原理
- 将磁盘划分为很多个虚拟分区,每个虚拟分区都是哈希环的一个节点
- 哈希环首尾相接,计算出数据的哈希值之后,必然落到哈希环的某个区间,然后顺时针必定能找到一个节点,为数据的存储位置
- 一般通过账户名/容器名/对象名三个名称组成一个位置的标识,用其计算出一个整型数来