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
分布式對象存儲
多了解一些