博睿數據-企業應用性能管理服務商,賦能IT運營智能化
飘花影院

開源工具BRFS

背景

企業在日常運營中會回收大量的數據文件進行存儲,如網頁截圖、網絡抓包、代碼堆?煺盏。此類文件體積小但數量多,這就導致在存儲上會遇到很多問題:

如果使用系統原生文件系統進行存儲,會遇到Linux索引節點(inode)耗盡導致磁盤存儲空間無法有效利用的問題,同時也無法原生支持分布式及高可用的要求。

但如果采用HDFS或HBASE方案存儲,則一方面硬件資源開銷較大,NameNode內存開銷過大,同時該方案讀寫效率也不足夠高效,尤其當內部進行塊文件合并時集群I/O壓力過大的時候,讀寫效率更是難以保證。

博睿數據10年深耕APM技術創新,推出了眾多行業領先產品,如Bonree SDK、Bonree Browser、Bonree Server等,這些產品每天都會回收海量數據文件,存儲時也遭遇了上述問題。憑借多年大數據項目實踐經驗,博睿數據構架BRFS(Bonree Distributed FileSystem)系統,以滿足各產品線對海量小文件數據存儲需求。

BRFS簡介

BRFS(Bonree Distributed FileSystem)是一個主要針對海量(10億個文件以上)小文件(快照、圖片、語音等,普遍大小在1KB-50KB)存儲而設計的高可用、高性能、易擴展的分布式文件系統。BRFS對存儲的文件格式沒有限制和要求,任何格式的文件都會以byte字節流的方式進行存儲。

此系統功能不僅包含了現有其他開源產品具備的權限控制、數據增刪讀、多副本備份、數據檢驗等基礎功能,同時博睿數據還設計了獨特且高效的副本自動遷移和平衡策略、多應用數據隔離且獨立配置,系統資源管理插件、集群狀態可視化監控與報警等功能。

BRFS的價值

從事后到事前,變被動運維為主動運維,消除運維盲點,幫助運維成為新業務部門,持續為業務提供服務支撐。

文件存儲采用寫時合并機制,幫助客戶解決環境IO瓶頸的問題;

文件副本自動平衡恢復,幫助客戶解決數據的安全性的問題;

硬件資源負載管理,幫助客戶解決集群資源使用熱點的問題;

引入應用分區的概念,幫助客戶解決不同業務數據個性化處理的問題;

集群橫向擴容,幫助客戶解決集群擴容不方便的問題。

Bonree BRFS與阿里FastDFS壓測對比

在處理海量5KB大小的文件并發寫入和讀取時,BRFS的性能表現均優于FastDFS,尤其在寫入性能方面,要明顯優于FastDFS,性能超出約2-3倍。

BRFS系統包含如下三個部分:

FS_Server.jar

在集群每個節點上運行的核心服務模塊。在模塊運行時會啟動若干ReginNode(管理節點)和DataNode(數據節點)進程來提供服務。其中ReginNode進程主要職責是管理存儲域元信息、管理數據節點、把用戶數據分配到不同的數據節點上進行處理;DataNode進程主要職責是用戶數據文件的寫入和讀取、副本自動平衡恢復、執行定時任務(副本數校驗、CRC校驗、數據刪除、數據歸并)執行等。

FS_ResouceManager.jar

系統資源管理模塊,用于實時收集和監控集群各節點資源負載情況,以支持系統可根據節點負載情況分配資源,解決各節點資源利用和負載不均衡問題。BRFS系統內部默認提供了一組資源管理的策略,主要包含CPU、內存、I/O、磁盤容量等負載指標。目前此模塊采用可熱插拔的設計方式,但如果用戶有特殊需求,可自定義此插件,自行實現集群資源的分配和管理。

server.properties.example

用于后臺服務運行時所有的關鍵控制參數的默認值配置,如果想變更參數值,可以復制一個名為server.properties的文件,并把需要修改的屬性和值添加到此文件中即可,程序運行時server.properties文件中的配置的參數值會覆蓋server.properties.example文件中參數的默認值。

同時,用戶如需調用BRFS服務,則需要在工程中引入FS_Client.jar,并在代碼中調用相關的接口對BRFS系統進行操作;BRFS分布式文件系統接收的數據形式可以是快照、圖片或者任何以byte數組方式進行存儲的數據文件。

BRFS整體系統架構

此系統主要由Zookeeper、Client、Server以及可視化監控UI等四部分模塊組成。

BRFS使用Zookeeper來管理集群服務,同步節點狀態,確保服務高可用。Zookeeper上保存具體信息包括:機器節點信息、Storage信息、SID信息、任務信息、副本信息、lock鎖信息、用戶信息、臨時信息等元數據信息。

Client即用戶客戶端,它是以Jar的形式被用戶在用戶工程代碼中引用,并通過調用其相應的接口對BRFS進行數據添加、修改、讀取等操作。

Server即后臺集群服務,包括RegionNode和DataNode兩組進程。主要功能包含了安全認證、副本管理、磁盤管理、任務(副本數校驗、crc校驗、刪除、歸并等)管理、節點資源管理和副本自動平衡與恢復、可視化監控與報警等功能模塊。后臺服務運行的相關進程是通過zookeeper進行管理的。

可視化監控與報警,它是把集群節點上存儲的文件情況、后臺任務執行情況、資源負載情況、服務運行狀態等都通過可視化監控直觀的觀察到,當某些狀態達到閥值后可以自動觸發報警。

BRFS核心運行機制

使用BRFS只需簡單四步

BRFS系統除依賴JDK等基礎組件外,其他組件只依賴Zookeeper服務進行集群狀態同步,且核心服務只有兩個Jar文件,因此安裝部署極為簡單,部署安裝只需簡單四步:

安裝基礎組件,主要包括Zookeeper、JDK等;

根據業務需要配置server.properties文件;

啟動各節點FS_Server.jar服務;

通過測試客戶端,測試讀寫功能是否正常。

未來

未來,BRFS新版本還將進行兩方面升級,一是對大文件存儲的支持和優化,不再區分大文件或是小文件,而定位為海量非結構化數據分布式存儲系統;二是解決目前所有類似服務都存在的需要用戶保存文件FID的問題,對于用戶來說,存儲海量文件的FID同樣是個很大的開銷,BRFS將開發一款全新的基于磁盤的key-value系統,以解決海量FID和文件元數據關聯存儲的問題。

技術是博睿數據發展的驅動力,10年從未停止技術創新的腳步,未來持續與大家分享更多、更先進的技術理念和方法,讓世界變得更美好!

僅需幾行代碼即可快速構建海量小文件分布式存儲系統

聯系我們,獲取BRFS

其他開源項目,敬請期待

Bonree HDSM項目

自研輕量級海量key-value對象存儲數據庫,純C/C++開發,以極小的內存開銷實現海量key-value對象的高速寫入和讀;單機4C/8G/300G(SATA)壓測,寫入QPS可達近4W/s,讀取QPS近9W/s。

Bonree Ants項目

自研針對海量時序數據流式處理引擎框架,提供原始數據預處理、準實時計算、多種時間粒度批量計算、數據落盤及各種容錯處理等內置支持,降低流式大數據處理開發門檻和成本,幫助企業便捷快速的實現海量時序指標數據的在線流式處理業務。

博睿數據-企業應用性能管理服務商,賦能IT運營智能化