常見分布式存儲系統架構分析


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 的對象存儲方案在探探的實踐


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM