王寶會 高 遠
(北京航空航天大學軟件學院,北京 100191)
面向BIM數據的分布式文件存儲系統設計與實施
王寶會 高 遠
(北京航空航天大學軟件學院,北京 100191)
國內的BIM相關技術在近幾年發展迅速,隨之高速增長的BIM數據對存儲系統的高可用性、負載均衡、橫向擴容等功能也提出了更高的要求。本文就BIM行業內某公司需求,設計并實施了以FastDFS為主HDFS為輔的分布式文件存儲系統。該公司主要存儲BIM數據中常見的.rfa文件和.rvt文件,其中,.rfa文件的大小在KB級,而部分.rvt文件則體量較大。主流分布式存儲系統HDFS適合存儲大文件,為節省研發HDFS針對小文件存儲算法方面的成本,本文引入了適合存儲中小型文件的輕量級分布式存儲系統FastDFS,以此為主要存儲系統,并部署HDFS,存儲大文件,為公司之后優化HDFS小文件存儲,遷移全部存儲平臺至HDFS,并在此之上建立分布式計算平臺打下技術基礎。本文在兩個存儲系統之上布置了配有Keepalived模塊的Nginx反向代理服務器,統一用戶存取入口,在保證系統負載均衡和高可用性能力的同時封裝了WebAPI,依據文件大小,將BIM數據分別存入FastDFS和HDFS。經測試,新系統較原系統在存儲性能方面有較大提升,并增添了高可用性、負載均衡、橫向擴容等功能。
BIM數據;FastDFS;HDFS
【DOI】 10.16670/j.cnki.cn11-5823/tu.2016.05.08
BIM(Building Information Modeling)是“建筑信息建模”的簡稱。自上世紀70年代于美國提出至今,BIM以其在縮短工期、節約成本、提高生產效率等方面的先天優勢,廣泛應用于以美國為首的眾多國家。[1]BIM的不斷發展也對其相關數據的存儲提出了更高的要求。經總結,BIM數據有如下特點:
1.1 BIM數據的非結構性
依據美國國家BIM標準對BIM的定義,該模型具有物理特性(PhysicalCharacteristic)和功能特性(FunctionalCharacteristic)。[2]其中,物理特性可以理解為其包含了建筑的幾何信息; 功能特性,是指其集成了工程項目中的各種相關信息。BIM各方信息相關性大、結構復雜,非結構性明顯,傳統關系數據庫難以滿足其存儲需求,應選擇文件存儲系統存儲其相關數據。
1.2 BIM數據量的不斷增長
隨著工程項目的不斷開展,BIM數據的體量不斷增大,呈現大數據(Big Data)特性。由于BIM大數據是企業的寶貴財富,往往不會刪除,這就要求存儲系統具有優秀的橫向擴容能力,以適應增長的數據量。
BIM數據的應用貫穿建筑設施的全部生命周期(見圖1),存儲系統應具有高可用性,以保證數據的長期存儲且,便于項目各階段的工作人員隨時調用信息。
海量的BIM數據還包含了多種格式,為提升系統處理BIM數據的效率,應對于常用的幾種數據格式進行更有針對性的存儲處理。

圖1 BIM數據應用于建筑設施的全部生命周期

圖2 原存儲系統結構
在性能方面,存儲系統應具有負載均衡功能,以滿足大量數據的存儲、調用并行操作需求。
本文就BIM行業內某公司需求,建立以FastDFS為主HDFS為輔的分布式存儲系統,為該公司的長遠發展打下BIM數據的存儲技術基礎。
該公司原存儲系統框架是基于SOA(Service-Oriented Architecture)的傳統文件存儲系統,配置WCF(Windows Communication Foundation)中間件,連接客戶端和存儲服務器,提供文件處理和業務功能服務,詳細系統結構如圖2所示。
根據BIM數據在非結構性和體量大方面的特點,總結出如下功能需求如圖3所示。

圖3 功能需求
BIM數據格式方面,該公司存儲的以Revit的.rfa文件和.rvt文件為主。其中,.rfa文件的大小在KB級,適合用FastDFS存儲,而部分.rvt文件體量過大,超出了FastDFS的適用范圍。出于對系統性能和成本的綜合考慮,本文以較輕量級的FastDFS為主,存儲中小文件,并引入HDFS,存儲較大的.rvt文件,為公司之后優化HDFS小文件存儲,遷移全部存儲平臺至HDFS,并在此之上建立分布式計算平臺打下技術基礎。
為便于分配FastDFS和HDFS的存儲任務,保持系統的高可用性和負載均衡能力,統一用戶使用接口,本文在FastDFS和HDFS之上布置了配有Keepalived模塊的Nginx反向代理服務器。
以上述需求為基礎,本文設計并實施了以FastDFS為主HDFS為副的分布式文件存儲系統。新系統針對BIM數據的特點提供了上傳、下載、高可用性、負載均衡、橫向擴容功能。
3.1 FastDFS
FastDFS(Fast Distributed File System)是一款類GFS(Google File System)的開源分布式文件存儲系統,由淘寶網的資深架構師余慶開發。FastDFS含有TrackerServer和StorageServer兩種角色,分別負責調度任務和文件數據的存儲。其存儲集群由一個或多個分組組成,每個分組下包含一臺或多臺Storage Server。同一組內的Storage Server相互備份,所存文件完全一致,從而實現冗余備份功能; 存儲集群的存儲總容量為所有組的容量線性和。這種設計簡化了系統的存儲和備份機制。FastDFS還取消了分塊存儲文件的功能,元數據保存在文件名中,適合存儲中小型文件。[3]綜上,FastDFS在保存基本功能的前提下,大大減小系統體量,打造了其“輕”、“快”的系統特點。

圖4 物理拓撲
3.2 HDFS
HDFS(Hadoop Distributed File System)作為云計算平臺Hadoop的分布式文件系統,已成為當前海量存儲集群上部署的主流文件系統。HDFS采用主從結構(Master-Slave結構),由一個NameNode和若干個DataNode組成[4],與FastDFS相似。由于元數據全部存于NameNode的內存中,過多的小文件存儲會最終耗盡NameNode的尋址能力,又HDFS采用分塊方式存儲文件,故HDFS適合存儲大文件。
3.3 Nginx
Nginx(“Enginex”)是俄羅斯人Igor Sysoev編寫的一款高性能的HTTP和反向代理服務器,也是一款IMAP/POP3/SMTP代理服務器。Nginx已經在俄羅斯最大的門戶網站——Rambler Media(www.rambler.ru)上運行多年,俄羅斯超過20%的虛擬主機平臺采用Nginx作為反向代理服務器。在國內,已經有新浪博客、新浪播客、搜狐通行證、網易新聞、網易博客、金山逍遙網、金山愛詞霸等多家網站、頻道使用Nginx服務器[5]。
3.4 Keepalived
Keepalived是由C語言編寫的路由軟件,其所提供的高可用性是通過VRRP(Virtual Router Redundancy Protocol)協議實現的[6]。VRRP,即虛擬路由冗余協議,可使用戶通過虛擬IP多路訪問鏈路上的多臺路由器。
根據公司對存儲系統的實際需求,本文將以FastDFS為主HDFS為副的分布式文件存儲系統應用于BIM信息平臺,其物理拓撲圖如圖4所示,詳細功能介紹如下:
4.1 上傳與下載
用戶通過Keepalived模塊建立的虛擬IP訪問Nginx服務器申請上傳或下載服務。對于上傳,Nginx根據文件大小和閾值(本文定為500MB)選擇調用FastDFS或HDFS的上傳文件API,并將文件名和文件大小存入數據庫; 下載時,用戶依文件名查詢數據庫的元數據,經Nginx服務器,從FastDFS或HDFS下載文件。
4.2 高可用性

圖5 HDFS的靜態負載均衡原理
高可用性要求系統在升級或出現故障時,運行在該系統上的數據不會丟失,而且可以在盡可能短的時間內恢復系統的正常運行。
FastDFS采取對等結構,以保證高可用性,可存在多臺TrackerServer和StorageServer,且各自集群內部關系平等。每臺StorageServer會向所有TrackerServer通信,當客戶端需通過TrackerSrver訪問StorageServer時,以輪轉方式選擇TrackerServer。
HDFS采取主從結構,通過設置兩臺NameNode來保證高可用性。其中,一臺NameNode處于Active狀態,接管全部調度任務,另一臺處于Standby狀態,保持與ActiveNameNode的元數據同步,在檢測到ActiveNameNode停止工作時,變為Active狀態。DataNode會與兩臺NameNode通信,確保信息同步。
FastDFS和HDFS均采用冗余備份方式實現文件數據存儲的高可用性。FastDFS中同一分組內StorageServer相互備份,備份份數等于組內StorageServer的數量; HDFS的默認備份三份,兩個副本分別存在一個機架的不同DataNode上,一個副本存在另一個機架上的DataNode。
反向代理服務器Nginx采用主從結構,通過Keepalived模塊實現高可用。Keepalived是VRRP協議的實現。對于多臺服務器,一臺為MASTER,其余為BACKUP,MASTER負責主要任務,BACKUP處于監聽狀態。當MASTER停止工作時,其余BACKUP依據VRRP協議競選MASTER。
4.3 負載均衡
FastDFS由TrackerServer提供負載均衡功能。以存儲為例,其選擇StorageServer的默認算法是:對于可用的多個分組,以現存儲空間使用率(剩余存儲空間/總存儲空間)為主要決定因素,每當進行存儲操作時更新評價值,選出評價值最高的兩個Group(優先選擇最高評價值的分組,若不可用,則選擇次高),再以輪詢方式選擇所選分組內的StorageServer。
HDFS通過Balancer程序實現對文件數據的靜態負載均衡。思路為:先機架間平衡,后機架內衡機,且均以圖5所示策略均衡負載。更新機架間或機架內個節點的平均存儲利用率(同FastDFS),結合閾值(由用戶設定),將各機架或機架內各節點分組,再按序在組間轉移數據。
在Nginx上有多種內置負載均衡和擴展負載均衡策略可供選擇。內置策略包括輪詢、加權輪詢、IP_hash、URL_hash等; 擴展策略有一致性hash、通用hash等。本文選用加權輪詢方法。
4.4 橫向擴容
FatDFS可在線擴容。
當有新的StorageServer加入某一分組時,該Storage Server會在啟動時為每個Tracker Server建立一個線程用于通信。Tracker Server在接收到新Storage Server的心跳包時會更新自己對應分組的映射表,并將新表同步至該分組的每臺Storage Server上。最后該組內一臺存有全部文件的Storage Server會將全部文件備份至新進Storage Server。
當有新的分組加入時,新分組中的Storage Server會以在啟動時向Tracker Server發送自己的信息。Tracker Server整理信息,建立該分組與其下Storage Server的映射表,并將該表返回給新組中的每臺Storage Server。此時,存儲系統完成擴容。
HDFS也可在線擴展存儲量。新的DataNode接入系統時,與NameNode握手,獲得NameNode的namespaceID,該ID用于保證系統的一致性,每當DataNode啟動時會在與NameNode握手時確定namespaceID是否一致,不一致時,DataNode會自動關閉。NameNode會在與DataNode初次握手時給其分配storage ID,用于唯一的標識該DataNode,且不會隨DataNode的IP和端口變化而變化。
本文首先分析BIM數據的存儲需求,并依此得出BIM數據存儲系統應具有高可用性、負載均衡、橫向擴展等功能,最終設計并實施了以FastDFS為主HDFS為副的分布式文件存儲系統。新系統對BIM數據的.rfa文件和.rvt文件做出了優化,通過在Nginx反向代理服務器上封裝WebAPI,以文件大小為閾值,調用FastDFS或HDFS。經測試,新系統存的存儲性能有較大提升,并增加了諸多功能,相比原系統,能適合存儲BIM數據。
[1]王珺. BIM理念及BIM軟件在建設項目中的應用研究[D]. 西南交通大學,2011.
[2]NIBS NationalBIM Standard Project Committee,National BIM Standard[EB/OL]. [2016-10-27]. https://www.nationalbimstandard.org/faqs.
[3]余慶.分布式文件系統FastDFS架構剖析[J],程序員,2010,(11):63-65.
[4]HDFSArchitecture[EB/OL].[2016-10-27].http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html.
[5]林麗麗. 使用高性能Web服務器Nginx實現開源負載均衡[J]. 大眾科技,2010,卷缺失(7):27,37-38.
[6]Keepalived[EB/OL]. [2016-10-27]. http://www.keepalived.org/
Design and Implementation of Distributed File Storage System based on BIM data
Wang Baohui,Gao Yuan
(SoftwareCollegeofBeihangUniversity,Beijing100191,China)
Building information modeling(BIM)related technologies have been widely used in recent years.Dueto itsnon-structural and growing volume,BIM data puts forward higher requirements tostorage system.In this paper,we design and implement a distributed file systemto store BIM data with high availability,load balancing,and horizontalexpansion.The FastDFs and HDFS(Hadoop distributed filesystem)are basically used to store small files and large files respectively.On top of this arrangement,Nginx reverse proxy server with Keepalived module is deployed tounify the user access port,and encapsulate the Web API to manage the BIM data.Preliminary experiment results show that our approach achieves better performance.
BIM Data; FastDFS; HDFS
國家科技支撐計劃子課題“建筑行業設計服務共性技術集成平臺研發與應用”(編號: 2014BAH25F03-04)
王寶會(1973-),男,教授級高工,碩士,主要研究方向:軟件架構; 高遠(1992-),男,碩士在讀,主要研究方向:軟件工程。
TU17
A
1674-7461(2016)05-0040-05