双控云存储集群平台的形式化建模

2018-01-04 10:59冯向科邓莹
电脑知识与技术 2018年28期
关键词:云存储

冯向科 邓莹

摘要:针对云存储平台单一控制节点带来的难以处理大并发访问问题和频繁更新存储内容带来的存取效率低下问题,分析了分布式文件系统和块存储各自的优缺点,提出了“虚拟节点à物理节点à区域”的集群存储映射关系,多个虚拟节点映射一个物理节点,减少写入对象时块数据在物理节点间的频繁大幅迁移,建立了双控制节点的双控云存储集群平台,将待存储对象切割并按集群存储映射关系分批分块存储,按重复数进行块的复制存储。针对自然语言和程序设计语言描述云存储平台面临的歧义性和抽象程度不够的问题,提出了采用Z语言描述云存储平台,从组件定义、关系定义和模式描述等方面规范描述云存储平台的整体架构和核心操作,使用UML时序图分步骤描述了双控云存储集群平台如何协作完成读写对象的核心操作。

关键词:云存储;云存储体系结构;双控;形式化建模

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)28-0241-03

1 背景

云存储是在云计算基础上拓展而来的新概念,是新的网络存储技术,是指通过集群、分布式文件系统等功能,将网络中大量的存储设备通过应用软件集合起来协同工作,对外提供数据存储服务的平台,所以云存储是一个以数据存储和管理为核心的云计算系统。

随着云存储技术的不断发展,很多IT界巨头纷纷推出基于云存储的不同服务,例如Google公司的个人存储空间提供Google Docs网页,可以进行文档编辑和修改,还能实现文档的共享、传送和版权管理。Apple公司推出了iCloud云服务,它是一个整合型云服务产品,包含了云计算、云搜索、云存储等多种功能。国内的网盘服务发展蓬勃,百度网盘、金山快盘、华为Dbank网盘等企业的网盘业务获得大幅扩张。

无论是哪种云存储平台,目前均没有开源,存在一定的使用风险。主流的OpenStack平台的Swift对象存储和Cinder块存储均有一个共同的问题:频繁的写入操作会导致平台处理效率显著降低。Google公司的Hadoop分布式文件系统(HDFS)存在主控节点单一,应对大并发访问能力不足的问题。借鉴Swift的“对象à块”存储技术和HDFS的“虚拟节点à物理节点à区域”设置,提出双控制节点的概念,解决大并发访问问题。使用形式规格说明语言──Z语言从组件定义、关系定义和模式描述等多个方面描述云存储平台的组件和核心操作,应用数学方法对云存储平台进行分析和建模。

2 云存储系统体系结构设计

云存储系统基于云计算平台部署,使用集群系统来分布式存储非结构化的二进制对象,它是云计算平台的一种拓展,具有分布式部署、并行处理、虚拟化、网络存储和负载均衡等特点。双控云存储集群平台由两个控制节点控制云存储系统,读写对象时,经过计算结点(Compute Node)处理后,经由控制节点(Control Node)查询对象的元数据(NoSQL),提交代理节点(Proxy Node)转发,代理节点获得对象数据或将对象数据存储到数据节点(Data Node),云存储平台的体系结构如图1所示。

为了应对云存储平台中频繁的写入对象操作导致的数据节点频繁更新问题,形成“代理节点à虚拟节点(Partition)à物理节点(Device)à区域(Zone)”的映射关系。写入对象时,并不是直接将对象写入物理节点,而是先对对象进行哈希计算,获得虚拟节点的索引,由该虚拟节点获得最近的物理节点位置,然后将对象写入该物理节点所在区域;同时,写入对象时会根据重复数将一个对象的块写入多个位置,即进行复制(Replicate)操作。

3 云存储平台核心操作描述

對于云存储平台来说,最基本、最频繁的两类操作分别是读取对象和写入对象。据统计,读写对象操作数占云存储平台操作数的96%以上。

读取对象操作通常由客户端Client发起,涉及的云存储平台组件包括ComputeNode、NoSQL DBMS、ProxyNode、Partition、Device和Zone,这些组件的定义详见“4.1 组件定义”。从云存储平台读取一个对象的流程如图2所示的时序图所示,具体的过程如下:

①Client向ControlNode提交uri格式的读取对象的请求,请求获得一个对象,如图2中的第1个传递;

②ControlNode向NoSQL DBMS申请查询该对象的第一批块的位置,如图2的第2、3个传递;

③ControlNode向ProxyNode申请查询对象的存储位置,如图2的第4个传递;

④ProxyNode根据非结构化的NoSQL格式的元数据获得Partition的位置,如图2的第5、6个传递;

⑤ProxyNode根据R1(详见“4.2 关系定义”)映射关系获得Device的位置,如图2的第7、8个传递;

⑥ProxyNode根据R2映射关系获得Zone的位置,如图2的第9、10、11个传递;

⑦ControlNode根据对象的[Partition, Device, Zone]关系,根据重复数,分批、分块就近读取对象内容,返回给Client,如图2的第12、13、14个传递。

写入对象操作由客户端Client提交请求,需要先将对象切割成块,再将其存储到区域,同时存储对象和块的元数据。写入对象到云存储平台的流程如图3所示的时序图所示,具体的过程如下:

1)Client向ControlNode提交写入对象的请求,如图3中的第1个传递;

2)ControlNode向NoSQL DBMS查询是否存在与写入对象相关联的文件,如图3中的第2、3个传递;

3)如果存在关联文件,则中止写入操作,否则向ComputeNode提交切割对象成块的请求,ComputeNode将对象切割成大小相等的块(最后一块除外),如图3中的第4、5个传递;

4)ComputeNode向ProxyNode申请搜索块的合适存储区域,如图3中的第6个传递;

5)ProxyNode根据非结构化的NoSQL格式的元数据搜索可用Partition位置,如图3的第7、8个传递;

6)ProxyNode根据R1映射关系由Partition位置获得Device的位置,如图3的第9、10个传递;

7)ProxyNode根据R2映射关系由Device位置获得Zone的位置,如图3的第11、12、13个传递;

8)ControlNode按重复数分批将块写入到多个区域,如图3的第14个传递;

9)ControlNode将对象的元数据和块的元数据依次写入NoSQL DBMS中。

4 云存储平台形式化建模

云存储平台的形式化建模包括组件定义、关系定义和模式描述,其中模式只包含核心操作模式,组件和关系只包括与核心操作模式相关的部分。

4.1 组件定义

1)ControlNode:双控集群系统的核心节点,数量为2,一方面为ComputeNode提供基本的网络服务,如DNS、NFS、DHCP等,另一方面为ComputeNode上的作业提供调度服务,还包括监控集群中各个节点和网络运行状况。ControlNode和ProxyNode之间存在n:m的映射关系。

2)ComputeNode:双控集群系统的计算核心,数量为1..*,承担整个系统的计算任务。

3)ProxyNode:接收来自ControlNode的请求,将其转发到不同的DataNode,获得对象或将对象存储到DataNode。ProxyNode和DataNode之间存在1:n的映射关系。

4)DataNode:集群系统的数据存储器和数据服务器,是Device的逻辑集合,数量为2..*。

5)Device:实际存储对象的磁盘系统,1个DataNode拥有的Device的数量为1..*。

6)Partition:Device的复制品,用于减少频繁操作对象所带来的Device频繁更新。Partition与Device之间存在n:1的映射关系。

7)Zone:Device的物理隔离区域,用以保障Device的安全。Zone和Device之间存在1:n的映射关系。

4.2 关系定义

1)Partition和Device之间存在n:1的映射关系“[part, dev]”,记为R1:

R1=={dev: P1 devices | ?part: partitions·part?dev∧#(dev)=1∧#(part)≥1}

2)Device与Zone之间存在n:1的映射关系“[dev, zon]”,记为R2:

R2=={zon: P1 zones | ?dev: devices·dev?zon∧#(zon)=1∧#(dev)≥1}

3)ControlNode和ProxyNode之间存在n:m的关系“[ProxyNode,ControlNode]”,记为R3:

R3=={ctrl:P1 Servers | (?prx: P1 Servers·#(prx)≥1∧#(ctrl)≥1∧#(ctrl)≤2)∧prx?ctrl}

4)ProxyNode和DataNode之间存在1:n的关系“[DataNode,ProxyNode]”,记为R4:

R4=={prx:P1 Servers | (?dat: P1 Servers·#(dat)≥1∧#(prx)≥1)∧dat?prx}

4.3 模式描述

采用形式规格说明语言Z描述云存儲平台的读取对象和写入对象的核心操作,垂直形式的模式更能清晰地描述核心操作。

1)读取对象操作的模式描述

从云存储平台读取对象的操作的模式ReadObject的描述如图4所示。ReadObject模式的输入值是元数据meta,输出值是块b!和对象obj!。读取对象操作不会导致Partition、Device和Zone发生改变。元数据信息包括对象的元数据和块的元数据,它们均存储在由ControlNode所访问的元数据数据库中,为非结构化的NoSQL数据。

2)写入对象操作的模式描述

将对象写入到云存储平台的操作的模式WriteObject的描述如图5所示。WriteObject模式的输入值是对象,输出值是块b!和元数据meta!。写入对象到云存储平台会导致Partition、Device和Zone均发生改变。

5 结束语

改进后的双控云存储集群平台既能克服单一控制节点导致的面对大并发访问难以处理的问题,也能解决频繁更新存储内容所带来的存取效率低下问题,按照“虚拟节点à物理节点à区域”的映射关系将经过哈希计算后的对象分块分批存储到区域。改变通常使用自然语言或程序设计语言从静态视图和动态视图两方面描述云存储平台,却面临着歧义性、抽象程度不够等问题,提出并实践使用Z语言这种形式规格说明语言来描述云存储平台及其核心操作,这种方式更容易验证,有利于减少后期出现的错误。

参考文献:

[1] 李朋远, 张志勇. 基于SWIFT的海量数据存储平台设计[J]. 计算机科学, 2018, 45(S1): 601-605.

[2] 杨岳湘, 邓文平, 邓劲生, 等. 基于云存储的网盘系统架构及关键技术研究[J]. 电信科学, 2012, 28(10): 68-72.

[3] 缪淮扣, 陈怡海. 软件形式规格说明语言——Z[M]. 北京: 清华大学出版社, 2012(11).

[4] 胡启敏, 薛锦云, 游珍, 等. PAR平台中若干软件构件形式化验证技术研究[J]. 计算机工程与科学, 2018, 40(2): 268-274.

[5] 陈伟. 基于HDFS的高校教育资源云存储平台研究与实现[J]. 重庆科技学院学报: 自然科学版, 2018, 20(1): 107-111.

【通联编辑:谢媛媛】

猜你喜欢
云存储
基于椭圆曲线的云存储数据完整性的验证研究
高校档案云存储模式探究
地铁高清视频存储技术的应用分析
云数据存储安全关键技术研究
浅析龙岩烟草业务数据与监控数据中的云存储与大数据