常见分布式存储系统架构分析

ceph, tikv, 小米飞马, GFS, etcd
存储系统分片后,如果不均衡,某一片写满了一台服务器,其他服务器还很空怎么处理的呢

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的)

推荐阅读

编码矩阵 (n+m) x n, 数据块 n x 1, 编码块(n+m)x1
编码:编码矩阵 x 数据块 = 编码块

io复制

心跳机制

选主

故障恢复

小米飞马

pegasus

字节跳动的几个项目

tikv

GFS & HDFS

HBASE

etcd

分布式对象存储

多了解一些

分布式文件系统

minio

基于 Go 开源项目 MIMIO 的对象存储方案在探探的实践

posted @ 2020-08-03 08:43  holidays  阅读(1212)  评论(0编辑  收藏  举报