互联网模式式下分布式对象存储系统的设计

2017-07-12 06:22韩盛中王冲何抗洪
电脑知识与技术 2017年13期
关键词:海量互联网

韩盛中 王冲 何抗洪

摘要:在互联网日益发展的当下,每天都产生大量的数据。据IDC统计预测,到2020年,全球的数据总量将达到44ZB,其中75%是非结构化数据。各个产业都面临着大规模的数字化转型,产生的数据量非常巨大。因此对于海量数据的管理、治理、移动、分析有迫切的需求,因此分布式对象存储系统孕育而生。对于文档、图片、视频以及备份归档文件,都可以统一存放在对象存储系统中。对象存储系统保证了数据可靠性、高可用性、安全性,提供了高并发低时延的访问。与传统的NAS存储相比,对象存储提供了RESTOVERHTTP(s)的接口,方便用户在互联网环境下访问。

关键词:互联网;海量;对象存储;REST

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)13-0034-02

当前各类企业特别是中小企业面临的数据存储的痛点有哪些?首先老的存储框架,无论是本地磁盘、SAN还是NAS都面临扩容难的问题,日益庞大的数据量越来越得不到满足;其次老的存储环境中,数据是死的,不能方便地移动,灵活性比较差;还有各个业务需要独立的申请存储环境,如果公用存储环境,又很难做到相互间的隔离;最后,传统的存储基于的文件系统由于元数据和目录树管理比较复杂,不适合处理海量的数据的存取。

分布式对象存储针对现有的痛点,基于软件定义的存储,重新设计了存储的架构,对于海量小文件进行了聚合处理,对于大文件进行了分块处理,在系统设计时主要着眼于、数据可靠性、安全性、易用性、扩展性以及高可用性进行了设计。

业界很多流行的分布式存储,比如Ceph、GlusterFS、HDFS,处理小文件的性能都差强人意,而TFS在处理大文件方面做的又有欠缺。因此需要设计一种统一存储,满足各种文件类型。

1整体架构设计

如图1所示,对象存储系统可以由主控集群、数据存储集群、账号管理集群、桶资源管理集群、元数据管理集群、反向代理、缓存、回收、灾备几个模块组成。

其中主控集群负责所有其他模块的在线状态管理,其他模块各个节点会定期地给主控集群上报状态。主控集群通过zab或者raft选举leader节点,主控集群中非leader节点作为代理,可以转发其他模块的请求给leader节点。

数据存储集群负责数据的到磁盘的读写,可以基于XFS或者EXT4文件系统。节点和磁盘的选择由主控节点随机分配。存储集群通过多副本或者纠删码的方式保证数据的可靠性。通常对小文件或者读性能要求较高的业务适用于多副本,对长期归档并且很少去访问的冷数据适用于纠删码。

元数据管理集群,负责将元数据保存到数据库。由于单个数据库的容量和新能存在瓶颈,因此对象存储中的元数据必须设计成分库分表分节点的方式存储管理元数据,每个数据库都成对出现,保证元数据的高可靠性。

账户管理集群负责管理对象存储所有的账户信息,每个业务系统接入对象存储,都会申请对应的账号,每个账号都会分配对应的公钥和私钥。

桶资源管理集群负责管理每个账号的桶资源,用户的每个桶相当于一个资源池,会有单独的流量和统计,每个桶之间是隔离的。如果桶设置为私有的,每个账号必须有公钥/秘钥产生签名后在能上传/下载桶内的文件资源。

缓存模块也是一组分布式缓存集群,用来保存一些临时文件和缓存信息。

回收模块用来扫描系统中的过期文件,如果过期则会逐一清理。

灾备模块负责主机房向备用机房的准实时灾备。

图片处理模块可以将存储在对象存储中各种格式的图片进行处理,包括JPEG、PNG、bmp、webp、gif和tiff等格式图片的格式转换、缩放、裁剪、水印、拼图、锐化等操作。

视频处理模块可以协助用户进行视频文件的处理,比如视频转码、截图等功能。目前支持H.264和H.265格式的转码。

2小文件聚合方案

传统的文件系统由于需要维护大量的元数据信息,导致对磁盘的10利用率不高,从而读取小文件性能较差。SDOSS针对海量小文件的应用场景做了优化。

传统文件系统读文件分成3个步骤:1)读取目录元数据dentry到内存;21读取文件inode到内存;3)读取文件实际内容。

其中,1、2两步需要对磁盘进行元数据操作,由于文件数太多的情况下,无法将所有元数据信息缓存到内存。

对象存储系统在小文件存储方面做了优化,借鉴Facebook的Haystack的系统,设计了小文件聚合方案,元数据的访问频次减少了2/3,有效的提高的磁盘的访问效率,从而提升了小文件的读性能。

如图2所示,对象存储采用小文件聚合的方案,将每个文件的元数据信息提取处理顺序存放在索引文件,并且加载到内存中。文件读取时,通过info信息可以找到对应的file数据信息。

在上传一个新文件时,对于数据文件和索引是一个追加写的过程。删文件时,删除索引文件中的记录,并置空数据文件,追加写入卷数据文件与卷索引文件(写一段相同fileid且大小为0的needle数据),由之后垃圾回收线程回收。存储服务重启,索引文件全部加载到内存。

3大文件分块方案

本系统的目标是一个通用的统一存储,大文件和小文件的区别是:大文件对带宽有更高的要求,大量的数据传输往往会造成网络流量大,往往读写一个大文件就能造成某个服务器节点的网口爆满,造成网络拥塞。对于大文件,通常的设计思路是分块上传。

使用大文件分块,提高了磁盘和节点的并發性(防止某一个文件的读写集中在一个节点或者一块磁盘上),从而提升了整体的读写性能。用户上传一个10GB文件,可以按照一定的大小将文件分块(一般可以设置1MB-64MB),每个chunk文件均匀的散列在各个服务器的磁盘上,读写改文件网络和磁盘10都可以均匀散列开。每个chunk文件都是多副本,保证数据可靠性。

4元数据管理策略

海量数据的元数据信息管理成本极高,如果采用GFS的方式,势必造成元数据服务器的单点问题;如果使用GlusterFs的无元数据管理的方式,无法满足对象存储丰富元数据的诉求。本系统元数据信息包括文件元数据、桶资源元数据、账号元数据。各类元数据信息以分库分表的形式散列在各模块的数据库中。

元数据管理可以用数据库管理,分散在不同的元数据服务器上,避免了单点造成的性能瓶颈。随着全行业的数字化转型,对象存储对于用户而言,不仅仅是提供了一个存储的环境,更是为用户提供了一个数据管理的平台,其中包括数据的治理和分析。用户在上传文件的过程中可以带上自己业务的标签,即用户自定义的元数据信息。对象存储可以通过这些元数据信息,协助业务进行系统行为和用户行为的分析。

5跨机房灾备

容灾备份是指通过技术和管理的途径,确保在灾难发生后,用户关键数据、数据处理系统和业务在短时间内能够恢复。存储系统在高可靠高可用的基础上,设计异地灾备满足更高级别的数据安全性。

本系统支持两个异地机房之间的数据同步备份,主机房准实时的向备用机房进行数据同步。当主用机房发生灾难时,备用机房可以在短时间内完成接管。

6数据处理

数据处理是对象存储给用户提供的增值服务,包括图片处理、视频处理、数据分析。

其中图片处理模块可以基于ImageMagick等开源软件开发,视频处理可以基于FFmepeg等开源软件开发。图片处理和视频处理都是独立的高可用模块,将下载的文件流按照用户指定的参数进行图像和视频处理。

数据分析模块可以基于Pentaho等开源数据分析软件开发,数据本身的价值是有限的,只有充分利用数据,挖掘数据的潜在价值,才能真正地为互联网商业模式提供基础支撑,才能为数字化转型提供有效的保障。

7总结

分布式对象存储有效地解决了互联网模式下的用户需求:在保证高效可靠存储的同时,提供丰富的数据处理和分析能力。随着全球数据量的日益增大,对于对象存储技术本身来说也将面临巨大的挑战,只有牢牢地把握用户的需求,从专业的角度去分析和解决问题,才能设计出优秀的存储系统。

猜你喜欢
海量互联网
一种傅里叶域海量数据高速谱聚类方法
海量快递垃圾正在“围城”——“绿色快递”势在必行
一个图形所蕴含的“海量”巧题
“互联网+”环境之下的著作权保护
“互联网+”对传统图书出版的影响和推动作用
从“数据新闻”看当前互联网新闻信息传播生态
互联网背景下大学生创新创业训练项目的实施
多通道海量数据记录系统设计
一种海量卫星导航轨迹点地图匹配方法
基于文件系统的分布式海量空间数据高效存储与组织研究