常見開源分布式存儲系統

對比說明

/文件系統

TFS

FastDFS

MogileFS

MooseFS

GlusterFS

Ceph

開發語言

C++

C

Perl

C

C

C++

開源協議

GPL V2

GPL V3

GPL

GPL V3

GPL V3

LGPL

數據存儲方式

文件/Trunk

文件

文件/塊

對象/文件/塊

集群節點通信協議

私有協議(TCP)

私有協議(TCP)

HTTP

私有協議(TCP)

私有協議(TCP)/ RDAM(遠程直接訪問內存)

私有協議(TCP)

專用元數據存儲點

占用NS

占用DB

占用MFS

占用MDS

在線擴容

支持

支持

支持

支持

支持

支持

冗余備份

支持

支持

-

支持

支持

支持

單點故障

存在

不存在

存在

存在

不存在

存在

跨集群同步

支持

部分支持

-

-

支持

不適用

易用性

安裝復雜,官方文檔少

安裝簡單,社區相對活躍

-

安裝簡單,官方文檔多

安裝簡單,官方文檔專業化

安裝簡單,官方文檔專業化

適用場景

跨集群的小文件

單集群的中小文件

-

單集群的大中文件

跨集群云存儲

單集群的大中小文件

開源協議說明

GPL:不允許修改后和衍生的代碼做為閉源的商業軟件發布和銷售,修改后該軟件產品必須也采用GPL協議;

GPLV2:修改文本的整體就必須按照GPL流通,不僅該修改文本的源碼必須向社 會公開,而且對于這種修改文本的流通不準許附加修改者自己作出的限制;

GPLV3:要求用戶公布修改的源代碼,還要求公布相關硬件;LGPL:更寬松的GPL

TFS

TFS(Taobao File System)是由淘寶開發的一個分布式文件系統,其內部經過特殊的優化處理,適用于海量的小文件存儲,目前已經對外開源;

TFS采用自有的文件系統格式存儲,因此需要專用的API接口去訪問,目前官方提供的客戶端版本有:C++/JAVA/PHP。

§?特性

1)在TFS文件系統中,NameServer負責管理文件元數據,通過HA機制實現主備熱切換,由于所有元數據都是在內存中,其處理效率非常高效,系統架構也非常簡單,管理也很方便;

2)TFS的DataServer作為分部署數據存儲節點,同時也具備負載均衡和冗余備份的功能,由于采用自有的文件系統,對小文件會采取合并策略,減少數據碎片,從而提升IO性能;

3)TFS將元數據信息(BlockID、FileID)直接映射至文件名中,這一設計大大降低了存儲元數據的內存空間;

§?優點

1)針對小文件量身定做,隨機IO性能比較高;

2)支持在線擴容機制,增強系統的可擴展性;

3)實現了軟RAID,增強系統的并發處理能力及數據容錯恢復能力;

4)支持主備熱倒換,提升系統的可用性;

5)支持主從集群部署,其中從集群主要提供讀/備功能;

§?缺點

1)TFS只對小文件做優化,不適合大文件的存儲;

2)不支持POSIX通用接口訪問,通用性較低;

3)不支持自定義目錄結構,及文件權限控制;

4)通過API下載,存在單點的性能瓶頸;

5)官方文檔非常少,學習成本高;

§?應用場景

1)多集群部署的應用

2)存儲后基本不做改動

3)海量小型文件

根據目前官方提供的材料,對單個集群節點,存儲節點在1000臺以內可以良好工作,如存儲節點擴大可能會出現NameServer的性能瓶頸,目前淘寶線上部署容量已達到1800TB規模(2009年數據)

§?安裝及使用

·???安裝指導

·???TFS_配置使用

?

?源代碼路徑:http://code.taobao.org/p/tfs/src/

?

?參考

?http://rdc.taobao.com/blog/cs/?p=128

?http://elf8848.iteye.com/blog/1724423

?http://baike.baidu.com/view/1030880.htm

?http://blog.yunnotes.net/index.php/install_document_for_tfs/

?

FastDFS

FastDFS是國人開發的一款分布式文件系統,目前社區比較活躍。如上圖所示系統中存在三種節點:Client、Tracker、Storage,在底層存儲上通過邏輯的分組概念,使得通過在同組內配置多個Storage,從而實現軟RAID10,提升并發IO的性能、簡單負載均衡及數據的冗余備份;同時通過線性的添加新的邏輯存儲組,從容實現存儲容量的線性擴容。

文件下載上,除了支持通過API方式,目前還提供了apache和nginx的插件支持,同時也可以不使用對應的插件,直接以Web靜態資源方式對外提供下載。

目前FastDFS(V4.x)代碼量大概6w多行,內部的網絡模型使用比較成熟的libevent三方庫,具備高并發的處理能力。

§特性

1)在上述介紹中Tracker服務器是整個系統的核心樞紐,其完成了訪問調度(負載均衡),監控管理Storage服務器,由此可見Tracker的作用至關重要,也就增加了系統的單點故障,為此FastDFS支持多個備用的Tracker,雖然實際測試發現備用Tracker運行不是非常完美,但還是能保證系統可用。

2)在文件同步上,只有同組的Storage才做同步,由文件所在的源Storage服務器push至其它Storage服務器,目前同步是采用Binlog方式實現,由于目前底層對同步后的文件不做正確性校驗,因此這種同步方式僅適用單個集群點的局部內部網絡,如果在公網上使用,肯定會出現損壞文件的情況,需要自行添加文件校驗機制。

3)支持主從文件,非常適合存在關聯關系的圖片,在存儲方式上,FastDFS在主從文件ID上做取巧,完成了關聯關系的存儲。

§優點

1)系統無需支持POSIX(可移植操作系統),降低了系統的復雜度,處理效率更高

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的并發處理能力及數據容錯恢復能力

4)支持主從文件,支持自定義擴展名

5)主備Tracker服務,增強系統的可用性

§缺點

1)不支持斷點續傳,對大文件將是噩夢(FastDFS不適合大文件存儲)

2)不支持POSIX通用接口訪問,通用性較低

3)對跨公網的文件同步,存在較大延遲,需要應用做相應的容錯策略

4)同步機制不支持文件正確性校驗,降低了系統的可用性

5)通過API下載,存在單點的性能瓶頸

§應用場景

1)單集群部署的應用

2)存儲后基本不做改動

3)小中型文件根據

目前官方提供的材料,現有的使用FastDFS系統存儲容量已經達到900T,物理機器已經達到100臺(50個組)


?安裝指導_FastDFS

?

?源碼路徑:https://github.com/happyfish100/fastdfs

§參考

?https://code.google.com/p/fastdfs/?

?http://bbs.chinaunix.net/forum-240-1.html

?http://portal.ucweb.local/docz/spec/platform/datastore/fastdfs

?

MooseFS

MooseFS是一個高可用的故障容錯分布式文件系統,它支持通過FUSE方式將文件掛載操作,同時其提供的web管理界面非常方便查看當前的文件存儲狀態。

§特性

1)從下圖中我們可以看到MooseFS文件系統由四部分組成:Managing Server 、Data Server 、Metadata Backup Server 及Client

2)其中所有的元數據都是由Managing Server管理,為了提高整個系統的可用性,MetadataBackup Server記錄文件元數據操作日志,用于數據的及時恢復

3)Data Server可以分布式部署,存儲的數據是以塊的方式分布至各存儲節點的,因此提升了系統的整體性能,同時Data Server提供了冗余備份的能力,提升系統的可靠性

4)Client通過FUSE方式掛載,提供了類似POSIX的訪問方式,從而降低了Client端的開發難度,增強系統的通用性

§元數據服務器(master):負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復

§元數據日志服務器(metalogger):負責備份master服務器的變化日志文件,以便于在master server出問題的時候接替其進行工作

§數據存儲服務器(chunkserver):數據實際存儲的地方,由多個物理服務器組成,負責連接管理服務器,聽從管理服務器調度,提供存儲空間,并為客戶提供數據傳輸;多節點拷貝;在數據存儲目錄,看不見實際的數據

§優點

1)部署安裝非常簡單,管理方便

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的 并發處理能力及數據容錯恢復能力

4)數據恢復比較容易,增強系統的可用性5)有回收站功能,方便業務定制

§缺點

1)存在單點性能瓶頸及單點故障

2)MFS Master節點很消耗內存

3)對于小于64KB的文件,存儲利用率較低

§應用場景

1)單集群部署的應用

2)中、大型文件

§參考

?http://portal.ucweb.local/docz/spec/platform/datastore/moosefsh?

?http://www.moosefs.org/?

?http://sourceforge.net/projects/moosefs/?source=directory

?

GlusterFS

GlusterFS是Red Hat旗下的一款開源分布式文件系統,它具備高擴展、高可用及高性能等特性,由于其無元數據服務器的設計,使其真正實現了線性的擴展能力,使存儲總容量可輕松達到PB級別,支持數千客戶端并發訪問;對跨集群,其強大的Geo-Replication可以實現集群間數據鏡像,而且是支持鏈式復制,這非常適用于垮集群的應用場景

§特性

1)目前GlusterFS支持FUSE方式掛載,可以通過標準的NFS/SMB/CIFS協議像訪問本體文件一樣訪問文件系統,同時其也支持HTTP/FTP/GlusterFS訪問,同時最新版本支持接入Amazon的AWS系統

2)GlusterFS系統通過基于SSH的命令行管理界面,可以遠程添加、刪除存儲節點,也可以監控當前存儲節點的使用狀態

3)GlusterFS支持集群節點中存儲虛擬卷的擴容動態擴容;同時在分布式冗余模式下,具備自愈管理功能,在Geo冗余模式下,文件支持斷點續傳、異步傳輸及增量傳送等特點

?

§優點

1)系統支持POSIX(可移植操作系統),支持FUSE掛載通過多種協議訪問,通用性比較高

2)支持在線擴容機制,增強系統的可擴展性

3)實現了軟RAID,增強系統的 并發處理能力及數據容錯恢復能力

4)強大的命令行管理,降低學習、部署成本

5)支持整個集群鏡像拷貝,方便根據業務壓力,增加集群節點

6)官方資料文檔專業化,該文件系統由Red Hat企業級做維護,版本質量有保障

§缺點

1)通用性越強,其跨越的層次就越多,影響其IO處理效率

2)頻繁讀寫下,會產生垃圾文件,占用磁盤空間

§應用場景

1)多集群部署的應用

2)中大型文件根據目前官方提供的材料,現有的使用GlusterFS系統存儲容量可輕松達到PB

§術語:

brick:分配到卷上的文件系統塊;

client:掛載卷,并對外提供服務;

server:實際文件存儲的地方;

subvolume:被轉換過的文件系統塊;

volume:最終轉換后的文件系統卷。

§參考

??http://www.gluster.org/

??http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Administration_Guide-en-US.pdf

??http://blog.csdn.net/liuben/article/details/6284551

?

Ceph

Ceph是一個可以按對象/塊/文件方式存儲的開源分布式文件系統,其設計之初,就將單點故障作為首先要解決的問題,因此該系統具備高可用性、高性能及可擴展等特點。該文件系統支持目前還處于試驗階段的高性能文件系統BTRFS(B-Tree文件系統),同時支持按OSD方式存儲,因此其性能是很卓越的, 因為該系統處于試商用階段,需謹慎引入到生產環境

§特性

1)Ceph底層存儲是基于RADOS(可靠的、自動的分布式對象存儲),它提供了LIBRADOS/RADOSGW/RBD/CEPHFS方式訪問底層的存儲系統,如下圖所示

2)通過FUSE,Ceph支持類似的POSIX訪問方式;Ceph分布式系統中最關鍵的MDS節點是可以部署多臺,無單點故障的問題,且處理性能大大提升

3)Ceph通過使用CRUSH算法動態完成文件inode number到object number的轉換,從而避免再存儲文件metadata信息,增強系統的靈活性

§優點

1)支持對象存儲(OSD)集群,通過CRUSH算法,完成文件動態定位, 處理效率更高

2)支持通過FUSE方式掛載,降低客戶端的開發成本,通用性高

3)支持分布式的MDS/MON,無單點故障

4)強大的容錯處理和自愈能力5)支持在線擴容和冗余備份,增強系統的可靠性

§缺點

1)目前處于試驗階段,系統穩定性有待考究

§應用場景

1)全網分布式部署的應用

2)對實時性、可靠性要求比較高官方宣傳,存儲容量可輕松達到PB級別

?

?源碼路徑:https://github.com/ceph/ceph

?

§參考

??http://ceph.com/

?

MogileFS

§開發語言:perl

§開源協議:GPL

§依賴數據庫

§Trackers(控制中心):負責讀寫數據庫,作為代理復制storage間同步的數據

§Database:存儲源數據(默認mysql)

§Storage:文件存儲

§除了API,可以通過與nginx集成,對外提供下載服務

?

?源碼路徑:https://github.com/mogilefs

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386988.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[十二省聯考2019]皮配

題目鏈接 選一個派系和一個陣營可以唯一確定一名導師 因為每一個陣營里的導師都分別來自不同派系,所以k0時,對陣營的選擇是不影響對派系的選擇的 唯一的限制就是同城市的要在同一個陣營 所以以每個城市為物品,物品大小為該城市的人數&#xf…

機器學習理論梳理1: PCA主成分分析

機器學習的理論部分學習知識點比較亂且雜。我這里通過幾篇文章,簡單總結一下自己對機器學習理論的理解,以防遺忘。第一篇文章主要概述了機器學習的基本任務以及一個常用的降維方法,主成分分析。 機器學習的基本任務 機器學習能實現許多不同…

29 _react-router說明

一、SPA的理解 1.單頁面web應用(single page web application ,SPA) 2.整個應用只有一個完整的頁面 3.點擊頁面中的鏈接不會刷新頁面,本身也不會向服務器發請求 4.當點擊路由鏈接時,只會做頁面的局部更新 5.數據都需要通過ajax請求獲取,并在前…

Java程序員如何快速理解Kubernetes

我們希望微服務是可復制的,可替換的工作節點,這樣可以輕松進行升級或降級,同時無需任何停機時間,并花費最少代價的管理。我們可以說我們希望他們成為我們的小黃人(minions)。本文我們將通過一個簡單的例子來…

NLP基礎 : HMM 隱馬爾可夫模型

Hidden Markov Model, HMM 隱馬爾可夫模型,是一種描述隱性變量(狀態)和顯性變量(觀測狀態)之間關系的模型。該模型遵循兩個假設,隱性狀態i只取決于前一個隱性狀態i-1,而與其他先前的隱形狀態無關。觀測狀態也只取決于當前的隱形狀態。因此我們…

關于秒殺系統優化方向

今天聽了一節咕泡學院的公開課,有收獲。 秒殺系統的特點: 1.限時;2.限量供應;3.并發量大;如何優化: 1.客戶端數據緩存。 2.CDN加速。 3.nginx動靜分離,靜態資源緩存,負載均衡。 4.se…

Mysql插入很慢,找到了稍微快點的方法

MYSQL批量插入數據庫實現語句性能分析 假定我們的表結構如下 代碼如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCHAR( 50 ) NOT NULL, other_value VARCHAR( 50 ) NOT NULL ) 通常情況下單條插入的sql語句我們會這么寫&…

Linux - 時間相關命令 - ntpdate, date, hwclock

1. 概述 最近也不知道寫啥了, 把之前的老文檔整理一下, 湊個數什么的配置時間這種工作, 偶爾還是要用一下主要描述 3 個命令的簡單適用 ntpdatehwlock2. ntpdate 1. 概述 用于同步時鐘的命令2. 機制 通常是有一個服務器對外提供時間客戶端可以與時間服務器同步ntp 是他們之間交…

RUNOOB python練習題1

用來練手的python 練習題,原鏈接 : python練習實例1 題干 : 有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少? import numpy as np cen np.array([1,2,3,4]) tens np.array([1,2,3,4])…

mysql explain用法和結果的含義

explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。 使用方法,在select語句前加上explain就可以了: 如: explain select surname,first_name form a,b where a.idb.id EXPLAIN列…

日志模塊logging用法

一、常用日志記錄場景及最佳解決方案: 日志記錄方式 最佳記錄日志方案 普通情況下,在控制臺顯示輸出 print() 報告正常程序操作過程中發生的事件 logging.info()(或者更詳細的logging.debug()) 發出有關特定事件的警告 warnings.warn()或者loggin…

MySQL 億級數據需求的優化思路(一),交易流水記錄的查詢

對MySQL的性能和億級數據的處理方法思考,以及分庫分表到底該如何做,在什么場景比較合適? 比如銀行交易流水記錄的查詢 限鹽少許,上實際實驗過程,以下是在實驗的過程中做一些操作,以及踩過的一些坑&#…

RUNOOB python練習題2

用來練手的python 練習題,原鏈接 : python練習實例2 題干 : 企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的…

dubbo負載均衡策略和集群容錯策略

dubbo負載均衡策略 random loadbalance 默認情況下,dubbo是random load balance隨機調用實現負載均衡,可以對provider不同實例設置不同的權重,會按照權重來負載均衡,權重越大分配流量越高,一般就用這個默認的就可以了。…

MySQL 億級數據需求的優化思路(二),100億數據,1萬字段屬性的秒級檢索

最近在研究億級數據的時候,無意中看到了一個關于寫58同城的文章 https://blog.csdn.net/admin1973/article/details/55251499?fromtimeline 其實上面講的versionext的方式以及壓縮json的思路,對于我來講都可以看得懂,想得通,其…

RUNOOB python練習題3

用來練手的python 練習題,原鏈接 : python練習實例3 拿到題目就寫了如下代碼,思路是因為使用**0.5進行開平方操作時,python會將數據類型自動轉換為float單精度浮點型。這里利用提取其整數部分,來判斷這個數是否是完全平方數。 z…

使用git將項目上傳到github(最簡單方法)

使用git將項目上傳到github(最簡單方法) 首先你需要一個github賬號,所有還沒有的話先去注冊吧! https://github.com/ 我們使用git需要先安裝git工具,這里給出下載地址,下載后一路直接安裝即可&#xff1…

數據庫 概念詳解

數據庫 概念詳解 一、MySQL MySQL 事務 MySQL 鎖 MySQL 二、Redis 三、MongoDB 四、Memcached 轉載于:https://www.cnblogs.com/guozepingboke/p/10743648.html

RUNOOB python練習題4

用來練手的python習題其四, 原題鏈接: python練習實例4 題干: 輸入某年某月某日,判斷這一天是這一年的第幾天? 這個題目比較簡單,只需要注意閏年和非閏年的區別就可以了。我這里使用numpy矩陣存儲每個月的天數,之后用…

GitHub入門:如何上傳與下載工程?

由于經常要在家寫代碼,所以需要有個能夠方便訪問代碼管理工具。最近嘗試了一下GitHub。經過了一翻糾結之后,基本上掌握了他的使用方式。 要使用GitHub需要首先在其網站上進行注冊。其官方網站是https://github.com/。注冊的流程在這里就不多少了&#x…