面向BIM数据的分布式文件存储系统设计与实施

2016-03-09 10:08王宝会
土木建筑工程信息技术 2016年5期
关键词:代理服务器存储系统机架

王宝会 高 远

(北京航空航天大学软件学院,北京 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

1 引言

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数据的存储技术基础。

2 总体概述

该公司原存储系统框架是基于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 系统模块

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多路访问链路上的多台路由器。

4 系统的架构设计

根据公司对存储系统的实际需求,本文将以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和端口变化而变化。

5 小结

本文首先分析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

猜你喜欢
代理服务器存储系统机架
分布式存储系统在企业档案管理中的应用
别忽略它的存在!“意大利新一代架皇”BAS Accordeon(雅歌顿)XL4 2.0发烧机架
天河超算存储系统在美创佳绩
地铁信号系统中代理服务器的设计与实现
冷轧轧机动态变规格控制及应用研究
最多支持36块显卡 德国水冷品牌AlphaCool推出矿机机架
防火墙技术与校园网络安全的研究
超大型环件轴向轧制组合机架受力分析
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
基于电池管理系统的数据存储系统设计