理论基础
分布式一致性含义
强一致性
回话一致性
分布式一致性协议
paxos
raft
块存储
内核中的块存储
通用块层
IO调度层
high SCSI 层
middle/low SCSI 层
驱动层
硬件设备
传统块存储服务
SAN
iSCSI
Fibre Channel
分布式块存储
典型应用场景
前端模块
基于tgt
基于virtual IO
后端模块
主要考虑下面几个问题:
数据拓扑
数据如何映射到不同节点
负载均衡
不同节点之间如何进行数据负载均衡:
容量均衡; ioutil 均衡; 吞吐均衡;
磁盘满的保护;
### 副本同步 站在用户的角度看(而非内部设计者、架构师的角度):
- 复制组如何创建
- 如何补副本
- 如何同步副本
- 如何删副本
- 主控节点和数据节点如何保证副本信息一致
-
IO路径
(以基于Raft的路径为例,主要解决这几个问题:)
逻辑地址到『物理地址』的映射
(这里的逻辑地址,指的是吧用户卷的地址(或者切分到复制组内部对应数据块的地址),物理地址指数据在磁盘(裸盘或文件系统中等位置))
元数据的管理
传统存储中可以通过额外的元数据文件或者磁盘进行管理,在分布式系统中可以通过分布式一致性协议做周期snapshot 的时候落盘元数据。
#### 写路径 遵循分布式一致性协议,先找主,然后append 到多数节点后,apply log后给用户响应。
- 找主
- append 写日志
- apply 日志
写写冲突、读写冲突
#### 读路径
- 找主
- 读数据 *
优化:如果applied index 主从都一样,从任何一样多从节点去读
数据服务
快照
对可读可写的卷做快照。
MVCC 原理
COW 和 COR
版本的提升
对在飞的写请求的处理
分布式环境中的快照 (日志持久化)
即时快照
克隆
基于快照克隆出一个可读可写的卷。