ceph, tikv, 小米飞马, GFS, etcd
存储系统分片后,如果不均衡,某一片写满了一台服务器,其他服务器还很空怎么处理的呢
ceph
- Ceph 数据复制算法和Raft数据一致性算法对比分析
- ceph体系结构
- 分布式存储 Ceph 介绍及原理架构分享 下
- ceph handle stale read with read lease
- infoq ceph系列
ceph架构
ceph存储集群包括osd、monitor和client三个组件
- osd提供单机存储与数据复制
- monitor负责保存集群元数据,包括osd map(包括osd状态等),crush map(包括物理层次结构及访问规则),pg map等,monitor本身也是一个paxos强一致性集群
- client是请求接入的地方,会去monitor请求osd map,crush map,crush rules,然后根据objid -> pgid -> osd sets
crush算法
ceph说自己没有leader,根据crush算法来算的,算到谁就是谁,那算出来的leader挂掉的呢,是需要向monitor拿视图吗?
CRUSH 算法是一个伪随机的过程,他可以从所有的 OSD 中,随机性选择一个 OSD 集合,但是同一个 PG 每次随机选择的结果是不变的,也就是映射的 OSD 集合是固定的。
根据crush算法,计算出pg -> 3 osd的映射,如果某个副本挂了,通过心跳检测会报告给monitor,monitor决策标记为down,更新osd map中的osd状态,再次调用crush算法时,会跳过down(选个临时主吧,此时应该不会踢出down的)
推荐阅读
- 大话Ceph--CRUSH那点事儿
- CRUSH算法的原理与实现
- [weil-crush-sc06.pdf]CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data
- 纠删码 Erasure Code
- 关于纠删码的一些说明解释
- 存储系统中的纠删码
- Ceph 纠删码介绍
编码矩阵 (n+m) x n, 数据块 n x 1, 编码块(n+m)x1
编码:编码矩阵 x 数据块 = 编码块
io复制
心跳机制
选主
故障恢复
小米飞马
字节跳动的几个项目
tikv
GFS & HDFS
HBASE
etcd
分布式对象存储
多了解一些