【论文】可扩展网络附属存储系统集群模块的设计与实现_第1页
【论文】可扩展网络附属存储系统集群模块的设计与实现_第2页
【论文】可扩展网络附属存储系统集群模块的设计与实现_第3页
【论文】可扩展网络附属存储系统集群模块的设计与实现_第4页
【论文】可扩展网络附属存储系统集群模块的设计与实现_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

研究生毕业论文(申请工程硕士学位)可扩展网络附属存储系统集群模块的设计与实现THEDESIGNANDIMPLEMENTATIONOFCLUSTERINGMODULEINSCALABLENETWORKATTACHEDSTORAGE摘要随着信息技术的发展,企业的生产经营对于电子数据的依赖越来越大。很多企业面对大量数据存在存储,管理,使用等一系列问题。网络附属存储(NETWORKATTACHEDSTORAGE,简称NAS)产品在数据存储领域由于具有用途专一,性价比高,支持多种数据传输协议的特点而被很多企业采用。传统的NAS产品是基于单个节点,存在先天性的缺陷。其可靠性差,扩展困难等缺点难以适应当代企业全天候数据服务的需求。本文将介绍一个可扩展的NAS产品,它是基于IBM公司的通用并行文件系统,可以在提供数据服务的同时进行扩展,备份等操作。可扩展NAS产品提供了基于B/S的管理系统,易于部署和管理。此外,企业可以根据当前数据量对节点数目进行调整,可以有效降低采购和运营成本。本文以可扩展NAS产品为项目背景,详细介绍了其集群模块的分析,设计和实现。本文首先介绍了可扩展NAS产品的背景,以及国内外NAS产品发展的现状。介绍可扩展NAS产品集群模块在项目中的作用和地位。介绍了产品网络层,数据层,服务层,表现层的四层架构。接着本文介绍了在集群模块开发过程中使用的技术和工具。然后,本文在需求分析的基础上介绍了集群模块的设计和实现。详细分析了集群模块的四个主要的功能子模块,网络通信子模块,节点管理子模块,权限管理子模块和性能监控子模块。本文对各个子模块的功能设计,关键流程设计进行了阐述,并且详细分析了关键的实现细节。最后,本文对所做的工作进行了总结,并且指出了集群模块在节点管理方面可以继续展开的工作。关键词可扩展NAS、网络通信、DJANGO框架、权限管理、性能监控ABSTRACTWITHTHEDEVELOPMENTOFINFORMATIONTECHNOLOGY,THEENTERPRISESDEPENDONELECTRONICDATAMORETHANEVERBEFORETHEENTERPRISESHAVETOSOLVEASERIESOFPROBLEMSSUCHASDATASTORAGE,MANAGEMENTANDUSAGEINSTORAGEFIELD,NETWORKATTACHEDSTORAGEFORSHORT,NASPRODUCTSHAVEALOTOFADVANTAGES,SOTHEYAREUSEDALOTTHEYAREPRODUCTSDESIGNEDFORASPECIALPURPOSEWITHLOWPRICEANDFEATURESSUPPORTFORMULTIPLEDATATRANSMISSIONPROTOCOLUNFORTUNATELY,TRADITIONALNASPRODUCTSAREBASEDONSINGLECOMPUTINGNODETHEYAREHARDTOEXTENDANDNOTRELIABLE,SOTHENEEDOFROUNDTHECLOCKSERVICECANNOTBESATISFIEDTHISPAPERWILLINTRODUCEASCALABLENASPRODUCTITISACLUSTERNASBASEDONGENERALPARALLELFILESYSTEMOFIBMWITHTHEFEATURESOFDISTRIBUTEDFILESYSTEMANDMANAGEMENTSYSTEM,THISPRODUCTPROVIDESEXTENTIONANDMANAGEMENTOPERATIONWHILEWORKINGSCALABLENASMANAGEMENTSYSTEMISBASEDONB/SARCHITECTURETHEENTERPRISESCANADJUSTTHENUMBEROFCOMPUTINGNODESACCORDINGTOTHESIZEOFDATATHISPOLICYCANEFFECTIVELYREDUCETHEPURCHASEANDOPERATINGCOSESBASEDONTHESCALABLENASPRODUCTASBACKGROUND,THISPAPERWILLINTRODUCETHEAYALYSIS,DESIGNANDIMPLEMENTATIONOFTHECLUSTERMODULEINTHISPROJECTFIRSTLY,THISPAPERINTRODUCESTHEBACKGROUNDOFSACLABLENASPRODUCTANDTHESITUATIONOFRESEARCHINNASAREATHEROLEANDFUNCTIONSOFTHECLUSTERMODULEINTHISPROJECTWILLBEINTRODUCEDTHEPRODUCTHAS4LAYERARCHITECTUREFROMBOTTOMTOUP,THEORDERISNETWORKLAYER,DATALAYER,SERVICELAYERANDPRESENTATIONLAYERSECONDLY,THISPAPERINTRODUCESTHETECHNOLOGYANDTOOLSUSEDINTHEPROJECTTHIRDLY,THISPAPERINTRODUCESTHEREQUIREMENTANALYSISINTHEPROJECTAFTERTHAT,THEDESIGNANDIMPLEMENTATIONOFCLUSTERMODULEISINTRODUCEDCLUSTERMODULEHAS4MAJORSUBMODULES,THENETWORKSUBMODULE,THENODEMANAGEMENTMODULE,THEPRIVILEGEMANAGEMENTSUBMODULEANDTHEPERFORMANCEMONITORINGSUBMODULEINTHISPAPER,FUNCTIONDESIGNFOREACHOFTHESUBMODULE,KEYPROCESSOFTHEPRODUCTISDISCUSSEDINDETAILFINALLY,THISPAPERMAKESACONCLUSION,ANDPOINTSOUTWHATTHECLUSTERMODULECANBEDONEINTHEFUTURE,SUCHASIMPROVINGTHEAUTOLOADBALANCEKEYWORDSSCALABLENAS,NETWORKCOMMUNICATION,DJANGO,AUTHORITYMANAGEMENT,PERFORMANCEMONITORING目录摘要IABSTRACTII图目录VII表目录IX第一章引言111项目背景112国内外相关领域发展现状2121NAS产品发展现状2122NAS与分布式文件系统的集成413本文主要进行的研究工作614本文的组织结构6第二章技术综述721DJANGO框架7211MVC设计模式7212DJANGO框架概述8213DJANGO框架的结构9214DJANGO请求响应流程1022PYTHON中数据处理技术11221XML处理11222数据序列化技术12223网络数据传输1323GPFS文件系统15231GPFS简介15232可扩展NAS中GPFS架构16233GPFS的配置和管理1724RRDTOOL工具18241RRDTOOL简介18242RRDTOOL的PYTHON调用1925本章小结20第三章集群模块的分析与设计2131可扩展NAS的总体规划2132集群模块的需求分析22321集群模块的业务需求22322集群模块的用户需求23322集群模块的功能需求26323集群模块的非功能需求2833集群模块的概要设计2834网络通信子模块分析与设计30341网络通信子模块流程设计30342元数据设计33343网络通信子模块详细设计3435节点管理子模块分析与设计37351节点管理子模块流程设计37352节点管理子模块结构设计3836用户管理子模块分析与设计39361用户管理子模块数据库设计39362用户管理子模块结构设计4037性能监控子模块分析与设计42371性能监控子模块流程设计42372RRDTOOL设计与使用4338本章小结43第四章集群模块的实现4441网络通信子模块实现44411初始化工作实现44412网络通信机制实现45413引导界面实现4842节点管理子模块实现49421元数据存取实现49422节点管理界面实现5143用户管理子模块实现5244性能监控子模块实现56441性能图表生成实现56442性能图表展示实现5845集群模块实现效果分析58451测试环境及测试用例58452效果分析6046本章小结60第五章总结与展望6151总结6152进一步工作展望61参考文献62致谢65版权及论文原创性说明66图目录图11共享存储集群NAS架构3图12统一文件系统集群NAS架构3图13GPFS特性与NAS需求映射关系5图21MVC框架8图22DJANGO组件结构9图23DOM树形结构11图24使用CPICKLE进行序列化12图25使用CPICKLE进行反序列化13图26SOCKET连接过程14图27SOCKETSERVER模块类关系14图28RRDTOOL合并算法19图31可扩展NAS产品整体架构21图32节点管理子模块用例图23图33用户管理子模块用例图24图34性能监控子模块用例图25图35POPEN与SHELL交互27图36集群模块的分层架构29图37系统初始化流程图31图38节点初始化流程图32图39元数据树状结构33图310网络通信子模块类图35图311文件系统相关类图36图312节点状态转移图38图313节点管理子模块系统结构图39图314用户管理子模块的实体关系图40图315用户管理子模块的系统结构图41图316性能监控子模块的泳道图42图41节点初始化脚本44图42TCPSERVER实现46图43发送端文件传输方法47图44接受端文件传输方法47图45初始化监控界面48图46元数据读取方法49图47元数据保存方法50图48节点管理界面51图49磁盘管理界面52图410用户管理界面52图411USERCREATIONFROM类对字段的定义53图412用户创建页面54图413USERCREATIONFROM类中的SAVE方法55图414用户和群组映射关系管理界面56图415内存图表的生成方法57图416性能监控页面效果58表目录表21GPFS启动过程中涉及的命令17表22RRDTOOL提供的函数20表31用户表的字段40表41测试服务器配置59第一章引言11项目背景信息技术正在以前所未有的方式改变着人们的工作和生活方式。如何应付伴随着信息的高速增长而带来的海量数据的存储,成为摆在业界人士面前的一道难题。为了高效且经济的提供数据的统一管理,在存储领域的各大公司均推出了针对企业用户的NAS产品。NAS是一种通过网络提供的集中式数据访问服务,计算节点通过文件传输协议从NAS设备处获得数据。NAS相比于传统的文件服务器而言,有很多优点。由于NAS设备用途更为单一,所以硬件以及软件配置更为精简,只提供数据访问以及相应的管理功能,可以节约资金;因为通过标准的协议获取数据,可以达到不同平台之间的文件共享;可以充分的利用LAN网络结构,便于存储系统的升级;通过冗余措施来保障数据服务的可靠性。张继波等,2005现有的NAS产品分为单节点和多节点两种。单节点NAS架构简单,造价低,被广大中小企业采用。缺陷也很明显,只针对单个设备导致存储的可扩展性受限,单纯的通过增加磁盘来扩展存储会使得存储效率下降,通过增加NAS设备又破坏了对数据的统一管理;单个设备无法实现动态的扩容,在增加磁盘时往往需要停止服务;同时基于单个设备的NAS可靠性不高,节点的故障会导致数据服务瘫痪。多节点NAS是近几年来业界发展的新方向,各大存储设备厂商纷纷推出该类型NAS产品,例如EMC的ISILON,IBM的SONAS等。多节点NAS产品可以通过软件和硬件架构解决单节点NAS的缺陷。现有的多节点NAS产品都是面向中高端市场,造价不菲。调查显示,随着时间的推移,可扩展NAS产品相比单节点NAS提供了更多的成本优势,但是对于评估新的NAS系统的用户而言,初始成本比可扩展NAS系统的先进特性和功能更重要GAHMETAL,2010。很多中小企业用户业务发展很快,但是采购时初始需求不高,预算有限。很多企业在采购了单节点NAS之后不久就面临扩展受限,不得不进行数据迁移的境况。在本论文介绍的可扩展的NAS产品,其客户群体是发展中的中小企业,特点是可根据业务量调节节点数目,从而达到低初始投入和高可扩展性的目的。可扩展NAS产品基于分布式文件系统,本身也是一个集群系统。在部署和管理上集群系统存在一系列的问题,包括如何自动化安装,如何统一权限管理,如何进行性能监控等。通过集群模块的支持,可以解决上述的缺陷。同时可以充分的利用分布式文件系统的特性,提供安全,稳定,可扩展的数据服务。12国内外相关领域发展现状121NAS产品发展现状面对企业对存储需求的快速增长,广大厂商均给出了NAS系统扩展方案。总体而言,NAS系统的扩展方式有SCALEUP和SCALEOUT两种。SCALEUP方式是指通过对单个NAS机器进行硬件升级来获取更高的存取速度,更大的存储空间和更快的传输速度。SCALEOUT是指通过扩展节点数目的方式达到相同的目的。现有的单节点NAS升级只能采用SCALEUP的方式,产品技术比较落后。“横向扩展存储将成为匹配性能和容量实现更快投资回报的必然要求。”2012,范平采用SCALEOUT方式进行扩展的NAS产品,其架构有两种方案,一种是多个单节点产品组成NAS群组,群组外部提供单独的调度模块对数据请求进行分配,维持负载均衡。这种架构节点之间耦合度低,扩展比较方便。缺点是本质上这种系统是单个NAS系统的堆叠,单节点NAS存在的缺陷并没有消除,同时多个节点也带来了管理上的诸多问题。另一种是集群NAS(CLUSTERNAS)架构。集群NAS在多个节点之间的协同上进行了软件或者硬件的支持,提供高效,稳定,负载均衡的NAS服务。目前的集群NAS有三种架构1共享存储架构。其架构如图11所示,局域网中存在两种节点,数据服务节点和存储节点。所有的数据服务节点共享所有的存储节点,数据服务节点对外提供数据服务,存储节点被隐藏。通过采用高性能的存储网络保障内部数据传输速度,通过扩展存储节点增加存储空间,通过增加数据服务节点提高数据服务能力。缺点是存储节点采用专有存储设备,成本比较高,数据服务节点存储能力被浪费,配置和管理都比较复杂。赵聪,2003数据服务节点数据服务节点数据服务节点存储节点(或集群)图11共享存储集群NAS架构2统一文件系统架构。其架构如图12所示,局域网中所有节点采用通用服务器,每个节点均提供存储能力和数据服务。所有的服务器存储设备组成一个整体的文件系统,在逻辑上统一命名空间。每个节点都可以通过访问该文件系统中所有存储设备上的文件。节点之间采用高速网络互联,提高文件系统的数据传输效率。由于数据服务和存储设备共用节点,可以减少设备数量。优点是采用通用设备,成本低,部署简单。缺点是,设备很容易故障,需要采用合适的机制保障可靠性,往往需要在安全性和存储利用率之间采取折中。谢长生等,2005数据服务节点数据服务节点数据服务节点统一命名空间的文件系统图12统一文件系统集群NAS架构3利用对象存储设备(OBJECTBASEDSTORAGEDEVICE,OSD)构建NAS架构。对象存储设备可以自动构建集群并智能管理数据分布,数据服务节点只需要将I/O数据交给OSD设备处理。苏勇等,2007该架构将数据通路和控制通路分离,架构简单,性能优秀,可扩展极佳。缺点是设备造价高,而且OSD设备处于试验阶段,离商业化产品的出现时间还很长。统一文件系统架构采用通用服务器,价格低,可扩展性高。虽然通用设备故障率较高,但是通过对元数据的备份和恢复,以及分布式文件系统提供的安全策略,可以消除单个存储设备或者单个节点故障对服务造成的影响。因此在本产品中采用了统一文件系统架构方案。122NAS与分布式文件系统的集成NAS产品的核心功能是数据的传输和存储。传输数据功能体现在各种数据服务器,支持常用的数据传输协议,例如FTP,CIFS,NFS等;存储包括围绕在数据存取周围的所有功能,包括数据分区,备份功能,快照功能等。这些功能构架在文件系统之上,需要利用文件系统提供的接口进行实现。文件系统作为一个独立的产品,具有一定的普适性,除了提供特性之外,一般需要遵守POSIX标准。NAS产品通过调用POSIX标准接口使用文件系统功能,保证系统的可移植性。缺点是效率较低,无法利用文件系统的特性。本案中可扩展NAS产品底层采用了IBM的GPFS(GENERALPARALLELFILESYSTEM,通用并行文件系统)文件系统。该文件系统是一个分布式文件系统,在设计和实现中都对于数据存取进行了独特的设计,与集群NAS产品的很多理念高度一致。如图13所示,GPFS提供了FILESET的概念可以用于NAS的数据分区,GPFS提供基于FILESET的备份,快照,也可以直接为NAS产品采用。GPFS提供了统一的逻辑存储空间,在任何一个节点上均可访问所有数据,在NAS产品元数据的备份和恢复操作上也可以调用相关功能。通过与底层文件系统的集成,可扩展NAS产品可以有效的利用文件系统中已有的特性,减少重复功能的开发,减少工作量的同时提高了整个产品的性能。功能的简化使得产品的部署难度下降,提高了可扩展性。NAS管理层NAS管理层GPFS文件系统GPFS文件系统新建数据分区删除数据分区备份数据分区数据分区快照新建FILESET删除FILESET对FILESET备份对FILESET建立快照图13GPFS特性与NAS需求映射关系在集成过程中,需要解决下述问题1GPFS是面向通用功能开发的,提供了多种配置选项,需要针对NAS产品的需求将不会用到的特性去除,将配置选项复杂度降低。2可扩展NAS产品的定位是针对中小企业的简单易用的产品,需要引入自动化配置,与文件系统的集成过程自动化是一个难题。3在GPFS中使用热备份技术或者软件RAID的方式来保证数据安全和服务可靠性。需要收集节点的磁盘信息,根据一定的算法来进行数据备份。所以需要动态采集节点的磁盘信息。4通过不同节点访问GPFS系统时,用户权限需要保持一致。因此需要在集群间引入统一的权限机制。5NAS产品的性能监控非常重要,用户需要对集群内每一个节点的各项性能指标进行统一的监控。为了解决上述问题,项目在集群文件系统的架构下添加了一个新的集群模块,该模块对系统的伸缩性提供支持。集群模块主要分为四个子模块,网络通信子模块,节点管理子模块,权限管理子模块和性能监控子模块。其中网络通信子模块是基础,其中有一套完整的机制来保障集群的建立与运行期间的可靠性,包括主节点推选机制,节点整体迁移机制,失效节点组机制。节点管理子模块用于方便用户管理。网络通信子模块还提供了元数据备份,集群中节点间的数据同步和文件传输等接口,来支持权限管理子模块和性能监控子模块。权限管理子模块包括文件系统的挂载,数据服务的权限配置,统一用户权限管理。性能监控子模块包括性能数据的收集,分析与展示。13本文主要进行的研究工作本文以可扩展NAS产品项目为背景,介绍了其集群模块的分析,设计与实现。可扩展NAS产品面临的主要挑战在两个方面,一是提供具有伸缩性的集群产品,二是对用户隐藏集群的复杂性,提供简易的管理系统。为解决上述问题,系统中引入了集群模块。集群模块实现了基于网络通信的集群自动化配置,此外提供了基于DJANGO实现的管理系统,方便用户对集群的管理和监控。集群模块的引入使得可扩展NAS产品更为完整和易用。本文的主要贡献包括1本文提供了一种基于统一文件系统架构的集群NAS的设计。该产品底层文件系统采用分布式文件系统,产品支持用SCALEOUT的方式进行扩展,随着节点数目的增加可以获得存储能力和数据服务能力的同时提升。2设计和实现了集群管理系统对集群的扩展和管理提供支持。管理系统中提供了网络通信机制用于节点信息的收集和传输。在信息收集的基础上提供了基于WEB的管理界面供用户进行集群管理和监控。3集群模块利用LINUX系统自带的定时任务工具和RRDTOOL,在网络数据传输的基础上,提供了对LINUX集群进行性能监控的一种实现。14本文的组织结构本文的组织结构如下第一章引言部分。介绍了项目背景,介绍了NAS在国内外的发展现状。对论文的工作和组织结构进行了概括。第二章技术综述。将项目所要涉及的技术和框架做了介绍,包括PYTHON数据处理技术、DJANGO框架、GPFS文件系统、RRDTOOL。第三章可扩展NAS产品集群模块的分析与设计。提出了产品的总体设计以及集群模块的需求。提出项目基本需求,对模块总体进行了设计,根据功能需求划分了子模块,对关键流程和数据结构进行了设计。第四章可扩展NAS产品集群模块的实现。根据设计,给出了集群模块的四个子模块的实现细节。第五章总结与展望。总结论文期间所做的工作,给出未来工作的展望。第二章技术综述本文介绍的集群模块,提供了管理系统和数据管理机制。管理系统使用了基于MVC的DJANGO框架。数据收集管理机制中,使用了PYTHON标准库和扩展库中的数据处理模块进行数据的采集,传输,存储。对于性能数据,系统采用了RRDTOOL这一专门的工具进行数据收集和展示。此外,集群模块还需要用到GPFS文件系统提供的命令。本章将对集群模块的设计和实现中涉及的技术和工具进行介绍。21DJANGO框架可扩展NAS产品提供了基于B/S架构的管理系统,该系统对业务逻辑复杂度的需求较高,对并发请求支持的需求不高,因此在开发中需要选择一个支持快速开发的框架。DJANGO是基于PYTHON语言开发的开源框架,并且遵循MVC的分层原则。DJANGO,2013211MVC设计模式浏览器/服务器结构,简称B/S结构,伴随着互联网的发展得到了大规模的应用。在B/S结构中,业务逻辑部分被放在服务器端实现,浏览器负责展示数据和命令操作,相比于客户端/服务器架构,虽然对服务器的能力要求较高,但是在程序的维护和升级上更容易操作。HTTP协议被用作B/S结构中浏览器端和服务器端的双向通信,它封装了浏览器端到服务器端的REQUEST和从服务器端到浏览器端的RESPONSE。在这种结构下,程序员只需要关心浏览器端的表现形式和服务器端的应用逻辑,简化了开发工作。王心路等,2004模型视图控制器设计模式,即MVC设计模式,是B/S结构的应用中常用的编程范式。在MVC模式中,应用程序分为MODEL,VIEW,CONTROLLER三个组成部分。这三个组成部分彼此间相互独立,遵循MVC模式的应用程序可以达到逻辑处理和数据表现相互分离的目的。每个组件只关心内部逻辑,达到高内聚,低耦合的效果。分层的思想可以有效的提高开发效率,同时在后期维护时,可扩展性和易维护性的需求都可以得到满足。周辉等,2012MVC设计模式中视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则,从而达到低耦合的效果。同时MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。从而便于重用。而分离视图层和业务逻辑层使得WEB应用更易于维护和修改。如图21所示,在MVC模式中,业务流程是由浏览器发起的,浏览器发出REQUEST,控制器获得请求,与数据模型交互,更新数据模型。控制器刷新视图,视图渲染浏览器页面,用户得到反馈。控制器视图数据模型浏览器REQUEST图21MVC框架212DJANGO框架概述在2005年,DJANGO开源之前,已经存在很多基于MVC的开发框架。然而DJANGO迅速得到了业界的认同,成为迄今为止最为成功的基于PYTHON的WEB开发框架。这是由两个方面决定的,DJANGO与PYTHON语言理念的一致和在设计之中对快速开发的支持。高昂,2009DJANGO遵循PYTHON的普遍原则。“PYTHON的用户一般都希望尽量清楚地描述问题,并且符合语言自身的理念,即PYTHONIC。”JEFFF,2009DJANGO中很多理念,比如尽量清楚的描述问题,对每种简单任务只有一种正确的做法,不依赖默认行为以及不要做重复性工作,都与PYTHON理念保持一致。DJANGO提供了很多组件,应用程序员可以根据项目的需要选择组件进行组装,同时DJANGO也允许用户将内置组件换成其他的工具。例如DJANGO内置数据库管理组件,调用该组件可以轻松的进行数据持久化的工作,同时DJANGO也提供了对其他数据库的支持,用户可以根据自己的喜好自行选择。由于理念一致,越来越多的PYTHON程序员加入到DJANGO的开发,并贡献了各种组件的源代码。王冉阳,2009DJANGO在设计之初就充分考虑了快速开发。DJANGO起源于在线新闻的站点,因此在设计之初就设计了一组快速实现业务逻辑的组件。在初始化时使用DJANGO的ADMIN组件可以进行自动化的快速部署。ADMINPY结合了配置文件,自动化脚本和命令行的功能。通过对该文件修改以及调用命令可以轻松的完成组件的选择,数据库的配置等功能。213DJANGO框架的结构DJANGO遵循了MVC设计模式,但是在实现上与其他的框架有所不同。其组件结构如图22所示。浏览器DJANGO服务器HTTP请求HTTP响应请求中间件URLCONFIG视图中间件视图方法数据模型模板响应响应中间件ORM数据库适配器图22DJANGO组件结构浏览器发出的请求首先交由URL映射器处理。HTTP请求的核心是URL,J2EE,NET等框架将URL解析过程封装,对应到同名方法中,用户在方法中进行编程。而在DJANGO中,程序员需要自己定义URL的解析,其遵从正则表达式规则,更加灵活和直观。DJANGO接收到请求后,根据URL配置和URLSPY文件里定义的规则逐条匹配,找到对应的视图方法和视图模板。视图方法不同于MVC中的视图模板,在视图方法中封装了真实的业务逻辑。它和URL映射器共同担当了MVC范式中控制器的角色。URL映射器封装了URL到视图方法的映射关系,视图方法则将数据模型和视图模板联系起来,定义了需要展示的数据。在视图方法中,也支持AJAX技术,允许浏览器端的JAVASCRIPT发出的非顺序性的访问请求。在DJANGO中视图方法存放在VIEWSPY中。视图模板是DJANGO抽象出来的一个模块,如果为每个请求写一个对应的HTML页面,会造成大量的重复性工作,并且给后期的维护带来很大的问题。视图模板是具有标签的文本,标签允许程序进行动态的替换,支持简单的逻辑结构,如选择结构或者循环结构。多个视图方法可以调用同一个视图模板,使用不同的数据并对其进行渲染得到最终的HTML页面。而且在实际使用中,视图模板不仅仅支持HTML,甚至是其他格式的文件供用户下载。在DJANGO中,视图模板存放在TEMPLATES文件夹下。数据模型是对真实世界的抽象,数据模型实例化的对象保存的是当前系统的状态,视图方法可以改变数据模型的值,同时也需要调用数据模型的值呈现给用户。数据模型需要与数据库中的对象保持一致。在DJANGO中数据模型通过MANAGEPYSTARTAPP命令建立,保存在MODELSPY文件中。ORM组件即对象关系映射组件,将数据库中的数据与程序中的对象进行映射,它封装了数据库的调用,将动态的对象自动与数据库记录进行状态同步,降低了开发者的工作量。同时PYTHONDBAPI的支持减少了在程序移植时可能出现的数据库兼容的问题。214DJANGO请求响应流程DJANGO对HTTP请求的处理流程如下1服务器接收到浏览器发出的服务请求,传给DJANGO。2DJANGO将REQUEST转换为请求对象,该对象的结构是DJANGO专门为REQUEST设计的字典结构,可以应对HTTPCGI的需求。3DJANGO在URL配置文件里寻找请求对应的VIEWSPY里的处理函数。4DJANGO以请求对象为参数传入该视图函数。5视图函数创建一个RESPONSE对象。6DJANGO将RESPONSE对象与TEMPLATE中的文件结合,生成HTML文件。7WEB服务器将页面传送给客户端。22PYTHON中数据处理技术集群模块中涉及到对包括XML在内的多种数据格式处理以及跨节点的数据传输。PYTHON作为解释性语言,对于数据处理非常擅长,常常被用于混合编程中的粘合剂罗霄等,2004。在PYTHON的标准库和扩展库中提供了多个模块对数据处理进行支持。PYTHON,2013221XML处理XML即可扩展标记语言,由于XML具有结构化,跨平台等优点,在很多领域XML已经成为事实上的信息交换标准。候要红等,2007PYTHON是一种解释性语言,在处理文本和解析复杂的数据结构方面具有先天性的优势。PYTHON很早就内建了对XML的支持。在PYTHON标准库中附带了用C语言编写的EXPAT解析器,EXPAT可以直接把XML文件转换为内存中的以元素为叶子的树状结构。图23DOM树形结构W3C推荐的对XML和HTML的解析标准是通过文档对象模型DOCUMENTOBJECTMODEL,简称DOM。KAMIRETAL,2009“DOM是一种平台和语言独立的接口,它允许程序或者脚本动态的访问更新文档的内容、结构和样式。文档可以被深度处理,并且处理的结果可以更新原有的文档”W3C,2005图23展示了一个HTML页面的DOM的树形结构。由于EXPAT只实现了DOM的一个子集,所以PYTHON提供了扩展包PYXML实现了完整的DOM对XML的访问接口。除此以外PYXML还实现了XML验证工具。PYXML极大的简化了XML处理工作,当然这种便利性伴随着性能的下降。LUTZ,2010在可扩展NAS的集群模块中,存放节点信息和磁盘信息的元数据对集群中所有节点是透明的,这部分的信息存在格式固定,读取频率远大于写入频率的特点,因此采用XML格式存储,项目中采用了PYXML获得较高的可扩展性。222数据序列化技术在PYTHON中数据是由基本的PYTHON对象组成的,为了避免转换为XML带来的性能损失,PYTHON提供了序列化功能可以完成对象和字符串之间的相互转化。在可扩展NAS产品的集群模块中,除了元数据以外其他中间状态数据采用序列化技术保存在磁盘上或者在节点之间进行共享。IMPORTPICKLETUM1D1,30,4,45J,ESOMESTRING,UUNICODESTRING,FNONEREFERENCE_LISTA,B,CREFERENCE_LISTAPPENDREFERENCE_LISTOUTPUTOPENTESTDAT,WBPICKLETHEDATAPICKLEDUMPTUM1,OUTPUTPICKLEDUMPREFERENCE_LIST,OUTPUT,1OUTPUTCLOSE图24使用CPICKLE进行序列化PYTHON提供了MARSHAL模块进行数据的序列化,该模块提供了DUMP和LOAD两个方法完成序列化和反序列化。由于MARSHAL模块仅支持PYTHON的基本数据类型和它们的组合,同时在不同的发行版本之间不能保证反序列化的成功。本项目中采用了PICKLE模块,该模块与MARSHAL作用相近,但是可以获得更好的版本兼容性。可以序列化和反序列化PYTHON的基本数据类型以及类生成的实例。使用C语言实现的CPICKLE和PICKLE具有相同的功能,并且具有更高的效率。图24展示了序列化的过程。CPICKLEDUMP方法默认是使用版本兼容的序列化方法,但是也提供了可选参数牺牲兼容性达到与MARSHAL模块相同的序列效率。通过DUMP方法得到的字符串可以用于存储,网络传输或者加密。只要字符串本身的结构和内容没有发生改变,都可以被LOAD方法识别,LOAD方法会遵守DUMP的顺序取出对象,在到达末尾时返回EOF标志。图25展示了对应上文的反序列化的过程。IMPORTPICKLETEST_FILEOPENTESTDAT,RBAPICKLELOADTEST_FILEPRINTABPICKLELOADTEST_FILEPRINTBTEST_FILECLOSE图25使用CPICKLE进行反序列化为了解决采用不同存储协议带来的反序列化问题,PYTHON在存储时会将协议和数据同时放入文件,PICKLE模块在反序列化的时候,LOAD方法可以检测出自身需要采用的协议,传入的对象参数只要带有READ方法即可。同时,PYTHON支持在序列化的同时进行压缩,保证数据在存储和网络传输时更有优势。MARTELLIETAL,2010223网络数据传输在可扩展NAS系统集群模块中,节点发现和通信用到了网络通信技术。在基于TCP/IP协议的网络中,数据传输的基石和基本通信单元是套接字SOCKET技术。STEVENSETAL,2010应用程序可以利用操作系统提供的SOCKET接口,实现在不同进程或者网络中不同节点的数据传输。图26显示了建立SOCKET连接的基本过程。SOCKET通信发生在服务器端和客户端,服务器端创建SOCKET并且绑定端口,之后进入监听状态。请求连接由客户端发起,双方建立TCP或者UDP连接,进行数据的传输。创建SOCKET绑定端口号监听端口号SEVER端CLIENT端接受客户端连接请求从SOCKET中读取字符关闭SOCKET创建SOCKET发送连接请求发送数据关闭SOCKET图26SOCKET连接过程SERVER端的编程在网络通信中比较复杂,涉及到端口绑定和监听,生命周期控制,并发处理等问题。在PYTHON中,提供了SOCKETSERVER模块简化了SERVER端的编程工作。图27显示了SOCKETSERVER模块的类之间的关系。BASESERVERTCPSERVERUDPSERVERUNIXSTREAMSERVERUNIXDATAGRAMSERVERFORKINGMIXEDINTHREADINGMIXEDIN图27SOCKETSERVER模块类关系BASESERVER是接口类,定义了服务器需要实现的方法,TCPSERVER使用TCP协议传输数据,UDPSERVER使用UDP协议,可能会发生数据包顺序不一致或者丢失。基于二者的UNIXSTREAMSERVER和UNIXDATAGRAMSERVER只被UNIX平台支持,所以较少使用。BASEREQUEST定义了请求处理的接口,它的子类需要实现FINISH,HANDLE,SETUP接口,定义接收到请求各个步骤的处理方法。SERVER端一般同时需要处理多个客户端发出的请求,TCPSERVER和UDPSERVER都是单线程的SERVER,只能同步处理请求,同一时间建立一个SOCKET连接请求,其他的请求需要排队。为了同时处理多个请求,防止请求超时,SOCKETSERVER模块提供了FORKINGMIXIN和THREADINGMIXIN两个类,这两个类的实例和SERVER类的实例可以通过组合得到THREADINGSERVER,该SERVER接收到SOCKET请求后,启动一个线程来处理请求,达到并发的效果。23GPFS文件系统231GPFS简介GPFS文件系统是IBM公司的一个集群文件系统,它可以提供多个节点对一个文件系统或者多个文件系统集的并发访问。GPFS,2013这些节点可以分布在局域网或者广域网中。这些特性保障了对数据的高效访问,GPFS文件系统支持SCALEOUT扩展方案。“除了支持通用数据存取之外,GPFS文件系统还支持包括数据同步,基于存储管理政策和跨节点操作等多种特性,GPFS可以基于AIX集群,LINUX集群,WINDOWS服务器集群或者三种平台的混合集群。”IBM,2012GPFS文件系统作为分布式文件系统,有如下的优点1GPFS在集群中的节点之间提供了统一命名空间和共享文件存储。集群中的任意节点通过GPFS文件系统的挂载点可以访问整个文件系统目录,扩展了存储空间。2GPFS文件系统内部提供了锁机制,避免不同节点对数据并发访问带来的数据同步问题。3GPFS文件系统提供了高可用性和高可恢复性,GPFS通过对RECOVERYGROUP的定义,把数据块打散,存放在不同的物理磁盘上,允许集群中节点级别的灾难恢复。4GPFS对网络条件要求不高,可以根据网络环境进行算法优化,达到最优的系统性能。5GPFS允许不停止服务的情况下对文件系统进行修改,文件服务的配置修改不会对服务本身造成影响。所以GPFS文件系统适应对服务稳定性要求高的场合。事实上IBM很多企业级的服务,包括数据库服务等都是基于GPFS文件系统。GPFS提供了管理命令,适应了大规模的集群。GPFS的关于集群的命令在任一节点上执行都可以达到同步执行的效果。省去了管理时需要登录多个子节点的工作。232可扩展NAS中GPFS架构GPFS的配置可以根据实际情况采用多种方式,首先GPFS支持多种类型的操作系统,包括AIX,LINUX,WINDOWSSERVER。在网络结构上,所有的节点可以都位于同一个局域网或者几个局域网和广域网的组合。同一个节点可以处于一个或者多个GPFS集群中。一个集群也可以有一个或者多个节点。在GPFS中定义了两种节点,NSDSERVER和NSDCLIENT。NSDCLIENT往往是计算能力较高的机器,从根据用户请求从NSDSERVER获取数据进行计算,NSDSERVER直接挂载磁盘,存储能力强。GPFS一共有四种基本架构所有节点组成一组逻辑单元;通过NSDCLIENT访问;多个SITES组成一个集群;多个集群共享数据。可扩展NAS在选择架构时,需要参考如下的因素1应用对I/O性能的要求,NAS是提供数据服务的,对I/O性能要求比较高,所以应该采用局域网结构,多个节点共享数据,防止大规模数据交换带来的性能下降。2对可靠性的需求,单节点的GPFS系统数据的安全性和服务可靠性不高。用户在初始时可以考虑,当后期有节点加入时,需要切换到集群配置。切换的同时不能影响数据服务的提供。3底层硬件的属性。可扩展NAS使用的是通用的服务器,而且NAS服务对计算的要求不高,所以全部的机器均扮演NSDSERVER角色,另外在硬件层面需要提供保障,提高通用服务器组成集群的网络性能。4对管理和安全性的考量也会影响GPFS的配置。这些指标和性能之间会有冲突,需要达成妥协。根据上述的因素,最终选择了所有节点组成一组逻辑单元,这种结构中,所有节点都是对等的,提供存储服务和数据访问服务。同时对扩展的支持较好,可以从单个节点开始扩展。233GPFS的配置和管理在可扩展NAS的集群模块中需要对GPFS进行两方面的操作,启动和节点管理。表21展示了启动和管理过程中需要用到的GPFS命令表21GPFS启动过程中涉及的命令命令作用MMCRCLUSTERNNODEDESC,NODEDESC|NODEFILECCLUSTERNAMEPHOSTNAMERSHELLRREMOTECOMMAND创建GPFSCLUSTER,并且指定CLUSTE名称以及用于管理文件系统的SHELL位置。MMCHLICENSESERVER|CLIENTACCEPTNNODEDESC,NODEDESC|NODEFILE指定接受的协议类型,以及接受协议节点。MMADDNODENNODEDESC,NODEDESC|NODEFILECCLUSTERNAMEPHOSTNAMERSHELLRREMOTECOMMAND向已经存在的GPFSCLUSTER中添加节点。MMDELNODENNODEDESC,NODEDESC|删除GPFS中的节点。NODEFILEMMCRFSFILESYSTEMNAMEFNSDFILEBBLOCKSIZETMOUNTPOINT创建文件系统并且指定文件系统的挂载点。MMCRNSDFNSDFILE创建NSD格式磁盘。MMDELNSDFNSDFILE删除NSD磁盘。MMSTARTUPN|A在节点上启动GPFS。MMSHUTDOWNN|A关闭GPFS服务。MMADDDISKCLUSTERNAMEFNSDFILE向GPFS中添加磁盘。MMDELDISKCLUSTERNAMENSDNAME把磁盘中数据迁出,并将磁盘移出集群。MMMOUNTFNSDFILE删除NSD磁盘。启动GPFS包括如下步骤,建立集群。根据传入的节点参数,创立集群。选择需要接受的GPFS协议类型,NSDCLIENT或者NSDSERVER。传入磁盘参数,将磁盘格式化为GPFS可以识别的NSDNETWORKSHAREDDISK,即网络共享磁盘。创建文件系统。在所有节点上启动GPFS文件系统。将文件系统挂载到节点的本地目录下。添加节点的步骤包括将节点加入集群。选择需要接受的GPFS协议类型。传入节点的磁盘参数,格式化为NSD。在新加入的节点上启动文件系统。将文件系统挂载到新加入的节点的本地目录下。添加磁盘的步骤包括将磁盘格式化为NSD类型。将NSD类型磁盘加入到指定的文件系统中。删除磁盘的步骤包括从集群中将磁盘删除,该步骤会将磁盘中的数据转移到其他磁盘下。删除NSD,该步骤会将磁盘格式化为操作系统可以识别的格式。删除节点之前需要将该节点下的磁盘删除,否则命令将失败。删除节点的步骤包括在该节点下停止GPFS文件系统服务。从集群中删除节点。24RRDTOOL工具241RRDTOOL简介RRDTOOL即ROUNDROBINDATABASE工具,RRDTOOL是MULTIROUTERTRAFFICGRAPHER简称MTRG包的组成部分,但是在实际应用中,该工具不仅仅用于网络流量监控,它可以用于收集和存储,展示各种状态信息。ROUNDROBIN结构采用固定大小的循环链表来存储信息,当存储空间耗尽时,会覆盖最早存入位置的数据。该存储结构定义为ROUNDROBINARCHIEVES简称RRA,其优点是占用存储空间小,存储效率高。缺点是只能保存最近一段时间内的原始状态信息。江竟敏,2011RRD工具的使用非常灵活,在生产中可以通过多个RRA的相互配合以及采集算法和合并算法的共同使用达到需要的监控效果。针对单一数据源,RRDTOOL可以同时提供多种粒度的采集算法,记录在不同的RRA文件中,多种采集算法彼此之间并不相互影响。在系统管理中,原始数据有时并不重要,对原始数据进行加工得到的数据往往更被系统管理员关心。RRDTOOL允许用户自定义存储策略,可以根据数据特点进行压缩。在系统监控中,平均值和峰值是需要记录的两项指标,假设系统需要保存过去一天的每小时详细数值和过去一周中每天的峰值和平均值,图28展示了RRDTOOL针对数据源的单一采集算法和多种合并算法。数据采集程序每个小时运行一次,将数值循环填入数据档案RRA1中,24小时之后第一个小时收集的数据将被覆盖。系统定义了两个合并算法,MAX和AVG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论