概述分布式存储应用技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概述分布式存储应用技术
发表时间:2018-10-22T16:57:01.773Z 来源:《防护工程》2018年第16期作者:蒋仕亮吴文涛[导读] 本文通过对存储数据的分类,分析了结构化数据、非结构化数据和半结构化数据存储技术,并介绍了相关的应用场景
中国移动广西公司 530022
摘要:本文通过对存储数据的分类,分析了结构化数据、非结构化数据和半结构化数据存储技术,并介绍了相关的应用场景。帮助用户构建适合自己需求的分布式存储系统。关键词:分布式;存储;结构化数据一、分布式存储技术概述
从本质上而言,分布式存储技术是一种相对于集中式存储技术而存在的概念,不同于集中式存储技术,分布式存储技术将数据存储在了虚拟的网络空间中,而非特点的节点之上。具体来说,分布式存储技术充分利用了网络的优势,把网络上相对比较零散的存储空间虚拟为一个整体,进而将这一空间作为数据存储的主体。而在实际中,数据已经分别存储于各个存储空间当中,而非传统意义上某些特定的节点。在分布式存储技术的发展过程中,衍生出了分布式存储管理系统,该系统能够将有效整合零散的网络存储空间,并且通过多台服务器实现载荷的分散存储,进而为系统的安全性、可靠性与实用性提供有效保证。对于分布式存储技术而言,“分散存储”与“集中管理”是其最为主要的特点,同时也是其得以广泛应用的主要优势所在。
二、分布式存储技术
2.1结构化数据的分布式存储技术很多系统都有大量的结构化数据,一般存储在Oracle、SQLServer等关系型数据库中。当单一节点的数据库无法支撑其应用系统时,业界一般采用垂直扩展与水平扩展方法来解决。垂直扩展:垂直扩展简单来说就是将不同功能的数据,存储在不同的数据库中。将一个整体数据库进行切分,从而达到了数据库的扩展。一个架构设计良好的应用系统,其系统的耦合度越低,各个功能模块之间交互越少越统一,将数据库的垂直切分就越容易实现。水平扩展:水平扩展简单来说,是将数据按照数据行来切分,是将表中不同行的数据切分到不同的数据库中。按照某种特定的规则将数据切分至不同的数据库,可以方便判断数据被划分到了哪个数据库中,其规则可以是某个字段的范围,某个字段的hash值,某个时间型字段的范围等等。
图1水平与垂直切分扩展的数据访问框架 2.2非结构化数据的分布式存储应用非结构化数据的分布式存储中最有名的当属GFS(Google File System)。GFS将整个系统分为三类角色:主服务器(Master)、客户端(Client)、数据块服务器(Chunk Server)。主服务器(Master):主要存储与数据文件相关的元数据,而非数据块(Chunk)。元数据包括:命名空间(Name Space),即包含整个文件系统的目录结构,数据块副本位置信息,能将映射到数据块的位置(通常是一个64位标签)及其组成文件的表格,正在读写特定的数据块的进程信息等。为保持元数据保持最新状态,Master节点会通过周期性地接收从每个Chunk节点来的更新("Heart-beat")。主服务器是GFS的管理节点。
客户端(Client):是一组专用接口,是GFS提供给应用程序的访问接口,以库文件的形式提供。应用程序通过直接调用这些库函数,并与该库链接在一起,它不遵守POSIX规范。数据块服务器(Chunk Server):负责具体的存储工作。GFS将文件按照固定大小进行分块,Chunk(数据块)是它存储的基本单位,其默认值为64MB,每个Chunk有一个唯一的64位标签。每一个Chunk以Block再进行划分,其默认值为64KB。GFS容错方式为副本模式,每一个Chunk有多个存储副本,其默认值为3。GFS可以根据它的规模需求,来定义数据块服务器的个数。
图2 Google-file-system架构图
2.3半结构化数据的分布式存储及应用
现在市场上先进的分布式存储大多集中在半结构化数据,因为具有一定的结构性,又更为灵活。由于半结构化数据没有严格的schema 定义,这些模型中的数据都是自描述的,所以不适合用传统的关系型数据库进行存储,适合存储这类数据的数据库被称作“NoSQL”数据库。半结构化的存储方案在市场上尤为纷繁复杂,针对于客户对数据各种需求的侧重点不同,比如大文件和小文件,路由算法,数据安全性(读、写、数据删除、数据恢复)数据稳定性,有相当多的应用方案可供选择。
2.3.1NoSQL数据库
“NoSQL”的学术名是“非关系型数据库”,具有非关系型,分布式,轻量级,支持水平扩展等特性且一般不保证遵循ACID原则的数据储存系统,它又常被称为下一代的数据库,具有以下特点:
不使用固定的关系模式元组来构建数据模型,而使用可扩展、松耦合的数据模式来对数据进行逻辑建模。
支持跨多节点数据分布模型和水平伸缩,遵循于CAP定理(在可用性,分区容忍性和一致性中满足其中任意2个)。支持动态供应(在生产集群中透明地加入/删除节点)和多数据中心。
数据持久化,可支持磁盘或内存中的数据,甚至有时候还支持可热插拔的定制存储。
支持多种的‘Non-SQL’接口(通常多于一种)来进行数据访问。
2.3.2半结构化数据分布式存储-Mongo DB
MongoDB是一款基于JSON(JavaScript Object Notation)的非关系型数据库,可将一个文档或文件以BSON(Binary JSON)的格式存入其中。作为一种轻量级的数据交换格式,JSON将JavaScript对象以一种特定的字符串表示,使得此交换格式易于阅读和编写,同时也易于机器生成和解析。BSON是JSON的二进制表示形式,它支持内嵌的文档对象和数组对象。非结构化数据以BSON格式存储,在MongoDB数据库中将其称之为文档,每个文档可作为关系数据库中的一条记录,统一管理若干记录成为集合,以一个数据库来管理这些集合,最终使文件数据可直接存储于数据库中。
MongoDB服务端可运行在Windows、OSX或Linux平台,支持32位和64位应用,默认端口为27017。因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB,推荐运行在64位平台。
2.3.3半结构化数据分布式存储-HDFS
Mongo DB适用于大量小文件的分布式存储,但是如果遇到流式访问的超大文件,他的性能将会体现出劣势。这时使用HDFS不失为一个好方案。HDFS,全称Hadoop Distributed File System,设计用来部署在低廉的硬件上,有着高容错性的特点。它适合超大数据集的应用程序,可提供高吞吐量来访问应用程序数据。通过放宽POSIX的约束,HDFS得以实现流形式来访问文件系统中的数据。 HDFS是一个的主从结构,它通过一个名字节点作为主服务器(即一个管理文件命名空间和调节客户端访问文件),来管理对应数据节点中的存储数据。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。HDFS内部机制是将一个文件进行分割成单个或复数块,并在一组数据节点中存储这些块。名字节点用来确定块与数据节点的映射和操作文件命名空间的文件或目录操作,如打开,关闭,重命名等等。数据节点负责来自文件系统客户的读写请求以及执行块的创建,删除,也包括从名字节点发来的块复制指令。
HDFS的优点如下:(1)可以存储大文件,单个文件的大小不受限制,甚至可大于任何单块硬盘的容量。(2)把存储单元抽象成块而不是文件:取消元数据关注简化了数据管理。(3)数据复制适应性好,数据复制保证系统的容错和可用性。(4)成本相对低廉,可使用便宜的硬件搭建的集群上运行。同时应用HDFS的缺点是HDFS将文件Meta信息存储在内存中,其内存限制了文件控制数量,当小文件过多的时候出现问题。
2.3.4半结构化数据分布式存储-SWIFT
Swift是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。Swift最佳应用于静态数据的长期存储,而非实时或文件系统的数据存储系统,最适合存储的数据类型是邮件存储和存档备份、虚拟机镜像、图片存储等。因为没有中心单元或主控结点,Swift提供了更强的扩展性、冗余和持久性。
Swift构建了一个冗余的可扩展的分布式对象存储集群,当集群的Node数量改变时,为尽可能减少更改现存Key和Node的映射关系,Swift采用一致性哈希算法来达到此目的。Swift主要有三个组成部分:代理服务器、存储服务器和一致性服务器。其架构下图所示,其中存储和一致性服务均允许在存储节点上。Auth认证服务目前已从Swift中剥离出来,使用OpenStack的认证服务Keystone,目的在于实现统一OpenStack各个项目间的认证管理。
三、数据库存储技术的应用分析
3.1 硬件方面的应用
要想实现数据的存储,必须有相应的硬件设备,以及软件方面的存储技术,而硬件作为存储的基础,能够直接决定实际存储的效率等。为了最大程度上提高存储的效率,人们在存储设备的基础上,添加了相应的高速缓存环节,由于硬盘长时间的运转,存储的效率会逐渐的减小,而计算机在实际的工作过程中,硬盘需要时刻的运转,如果增加一个缓存部分,数据就可以先存放到这个缓存中,当积累到一定的程度后,一起写入到硬盘中。这样的存储技术可以很好的保护硬件设备,对于数据库来说,具有非常重要的作用,目前的数据库存储技术中,都会采用类似的设备,对硬盘进行保护,同时在一定程度上提高存储的效率,从某种意义上来说,添加的这些缓存设备,也属于存储技术的范畴,如果能够充分的利用这种技术,就可以很好的提高数据库的性能。
3.2 软件方面的应用
数据库存储技术,主要就是软件方面的应用,通常情况下,在数据库建设之前,硬件设备的型号都已经固定了,数据管理和存储的效率,基本已经固定了,要想进一步提高数据存储的效率,只能通过优化软件技术,如改变数据存储的结构,以及写入和读取的方式等,这样可以再一定程度上提高数据库的性能。与硬件改造提高数据库性能的方式相比,软件技术的优化,显然具有鲜明的特点,首先就是成本比较低,由于不需要完善硬件设备,可以节省大量的资金,虽然存储技术的优化,也需要支付一定的成本,但是与硬件设备的费用相比,显然就要低很多,因此现在的数据库建设中,非常重视存储技术软件方面的优化,都会采用一些先进的技术,最大程度上提高数据库的性能。
四、典型行业应用场景
近年来存储云化趋势明显,分布式云存储未来10年市场快速增长,预计2027将占存储市场的70%份额。云存储从专有设备变为通用设备,简单管理、低TCO,并支持大规模线性扩展,新兴业务(视频,大数据,数字化业务等)全面云化,随着云存储市场快速增长,传统数