LXPFS集群分布式文件存储系统技术方案

技术编号:13829301 阅读:71 留言:0更新日期:2016-10-13 14:46
LXPFS集群分布式文件存储系统,采用LXPFS集群给应用提供访问方法,通过封装好的JS API访问LXPFS中的文件;访问LXPFS文件的方式分为三种:读、写和删除;在前端实现访问LXPFS文件的组件,在Web应用开发中只需生成一个组件,调用相应的接口就能实现访问;系统采用主从模式架构,由一个Dispatchnode和一个及以上的Tasknode组成;Dispatchnode是一个controller服务器,负责调配所有文件的存储以及处理并转发客户端的请求,负责管理它所在节点上的存储和响应客户端的请求;上传文件是将数据写入Tasknode中,下载文件则是读取Tasknode文件数据。本系统采用对大文件分割的方式进行上传,对上传的文件没有大小限制,解决了大容量存储、分布存储、负载均衡等问题,它以服务的方式提供Web服务器一个文件管理组件的功能。

【技术实现步骤摘要】

本专利技术用于解决Web服务项目对文件访问和文件的存储,具体涉及LXPFS集群分布式文件存储系统

技术介绍
基于Web技术的应用系统,由于开发周期短,与用户平台无关,易于实现交互应用,能对信息进行快速、高效地收集、处理和发布,近几年来得到了快速发展。数据对于应用是很重要的,可以这么说几乎所有的应用系统开发都是围绕着数据进行的,Web应用系统也不例外。在用户使用的过程中,应用系统在用户需要时提供数据。Web系统在与用户交互,其实也是一个数据交换过程。应用系统的数据主要保存在数据库和文件里,然而数据库也是基于文件的。应用系统的信息数据一般是保存在数据库里,大的数据则保存在文件里。所以文件管理系统对于Web应用同样是一个基础而重要的功能模块之一。为了方便用户的使用,Web应用一般提供三种对文件的访问方式,上传、下载和删除,也可以说写入、读取和删除。文件上传存在多种技术,常见的有:基于JS框架提供的上传组件;基于数据库技术;使用控件进行上传;使用其他的上传组件等。使用JS框架提供的上传组件,代码的可重用性变得异常差。多个使用不同JS框架开发的Web应用服务系统,就存在多个不同版本的文件管理功能模块。基于数据库的上传,一般是将文件保存在数据库里。这种方式虽然能够提高文件的索引,便于维护和管理,但对于存储空间的浪费也是很突出的。使用不同的上传技术,都会有不同的弊端。相比传统的上传技术,LXPFS(Linux XProgram File System)在减少弊端和完善。很多Web上传都对大文件上传做了限制,这是因为上传文件过大,Http上传请求会长时间占用资源,可能致使浏览器挂死。为了实现克服大文件的上传,于是又出现了使用控件的方法。比如网页版的百度网盘和360网盘,在用户上传的文件大小超过限制时,会提示用户安装控件。虽然使用控件实现了大文件的上传,但是它增加了开发难度和提高了开发成本,我们必须针对不同的平台系统和不同的浏览器开发不同版本的控件,这显然不为开发人员所乐见。一些专业的团队开发了上传的组件,它相比以上任何上传技术都有很大的进步性,可是每个使用这些上传组件的系统都是孤立的。这些孤立的系统就如孤岛一样,资源无法共享没有被有效利用。LXPFS采用文件分片上传的方式,实现了大文件的上传。并且在前端实现中,未引入任何JS框架,这样提高了Web应用系统的兼容,减少了对Web应用开发的技术限制。在前端只是实现了基本的上传组件功能,所有的界面展示交由Web应用,这种方式相比有些上传组件更
加灵活。LXPFS采用了秒传技术,提高上传效率,很多上传组件也有所实现,但是LXPFS相比组件而言,它是一个服务系统。它给每个Web应用服务系统提供一个文件访问的组件功能,允许多系统接入,它同时存储多个应用系统的数据,扩大了文件共享的范围,增加了秒传的机率。并且LXPFS对应用系统的数据又做了相应的隔离,对于安全有很好的保障。它打破了上传组件的孤岛模式。LXPFS是一个轻量级分布式存储系统,相比Hadoop、tfs等分布式存储系统而言,LXPFS在安全方面做了特殊的限制,并且它主要是面向Web应用开发。它旨在提高文件的上传效率,实现交互信息很少而可做的操作很多。相比其他的分布式文件存储系统,它更偏重于降低Web应用系统对于文件管理模块功能的开发难度,统一多个应用系统的文件管理开发,同时减少Web应用服务系统对于文件管理模块的运维成本。并且它多种备份策略,是从集群HA(高可用)架构和文件的特殊存储方式等多方面来实现的。在集群架构的节点的功能划分也是不同的。
技术实现思路
为了避免应用的重复性开发,一般的做法是把功能模块进行抽象,形成一个独立的组件,并提供相应的接口进行调用。LXPFS是一个轻量级的分布式文件存储系统,它以服务的方式提供给Web应用一个文件存储管理的功能组件,因此它允许多个Web应用接入,而LXPFS则会接管这些Web应用的文件管理的工作。LXPFS的出现降低了开发的难度,减少了开发成本。对比文件管理组件,LXPFS统一管理多应用的文件,扩大了文件共享池的范围,增加了秒传的机率,使上传效率有很大提高,同时也降低了Web应用中的文件管理的运维成本。1组件服务LXPFS给应用提供了访问方法,可以通过封装好的JS API访问LXPFS中的文件。访问LXPFS文件的方式分为三种,读、写和删除。我们已经在前端实现了访问LXPFS文件的组件,在Web应用开发中,只需要生成一个组件,调用相应的接口就可以实现访问。组件分为三个功能模块,上传功能、下载功能和删除功能。上传文件是写入LXPFS集群Tasknode数据的一种方式,而下载文件则是读取Tasknode文件数据的一种方式。上传组件服务被封装成一个实体类QFileUpload。每个QFileUpload实体类中维护着一个上传队列。上传之前需要先选择本地文件,选择的一个本地文件将被封装成一个上传任务对象,并被自动添加到上传任务队列里。上传任务对象随机产生一个唯一的ID值作为文件ID(fd),还会计算生成文件的MD5值,并保存了上传文件的相关信息和上传信息。添加上传任务队列完成后即可进行上传,由于添加文件的MD5计算是异步的,所以在上传时有些比较大的文件有可能还没有获得MD5值,这时上传服务组件会自动获取已经数据准备完成得上传任务,然
后依次执行。下载、删除的组件服务和上传的组件服务实现思路是一致的。文件以分片的方式进行上传,文件块被分散保存在LXPFS集群的Tasknode上。Tasknode的任务进程实例在接收下载请求时,会根据文件共享池里的映射关系表索引文件块,并把这些文件块拼接形成一个完整的文件以支持组件下载。1.1文件分片Http发送上传请求,大文件内容较多需要传输的数据量较大,因此上传需要很长时间。Http的长时间请求,占用资源,会致使浏览器挂死。为了防止浏览器挂死,所以很多浏览器一般都会限制上传文件的大小。上传的文件超过浏览器的文件大小限制,那么就无法上传。我们采用的方法是把大文件分割成多个较小的文件块,上传这些文件块时间较短,不会长时间占用资源。数据的最小单位是位,单位的有序数据集合组成数据块。而这些数据块的位置是被编号的,因此,可以认为有效的数据是有序的,数据块只是数据集合的一个子集,也就是一个片段。文件其实可以看作是一个有序的字节串,字节串中第一个字节是文件的头,最后一个字节是文件的尾。每一个文件为了便于系统和用户识别,都被分配了一个便于理解的名字。典型的文件操作有读、写、创建和删除等。文件通过目录组织起来,因为目录也可以包含子目录,所以目录可以层层嵌套,形成文件路径。从本质上讲,文件系统是特殊的数据分层存储结构,而文件则是有效存储的数据块。因此大文件只是一个较大的有序的数据片段,同样也可以看作是由其他多个数据小片段组成的。当然这些数据片段并不是随意组合的,它们是有序的。Html5增加了很多新的特性,其中之一就是提供了Web应用可读取本地文件的API。在此之前读取本地文件的操作被认为是不安全的,所以是被禁止的。使用该特性,按照一个设定的大小值来读取文件,可以把大文件进行分片。每读取到的一个文件片段将被封装成一个blob对象,即成为本文档来自技高网
...

【技术保护点】
LXPFS集群分布式文件存储系统,其特征在于,采用LXPFS集群给应用提供访问方法,通过封装好的JS API访问LXPFS中的文件;访问LXPFS文件的方式分为三种:读、写和删除;在前端实现了访问LXPFS文件的组件,在Web应用开发中,只需要生成一个组件,调用相应的接口就能实现访问;该系统采用主从模式的架构,由一个Dispatchnode和一个及以上的Tasknode组成;Dispatchnode是一个controller服务器,负责调配所有文件的存储以及处理并转发客户端的请求,Tasknode是在每节点设一个,负责管理它所在节点上的存储和响应客户端的请求;上传文件是将数据写入LXPFS集群的Tasknode中,下载文件则是读取Tasknode文件数据;Dispatchnode的工作内容分为以下几个部分:a.验证访问请求的IP是否已经注册;b.解析访问请求数据包,获取访问操作方式、操作对象以及其他相关信息;c.利用心跳机制,获取集群中目标节点服务器的负载参数,计算分析这些参数,获取最适合委派任务的目标节点位置;d.使用操作对象文件的MD5值索引文件,找到文件所在目标节点服务器实现秒传,否则将任务派发给最适合的目标节点;每个文件块在写入前,系统都会记录这个文件块的MD5值,作为它的有效性检查的依据;如果保存在系统上的某个文件块计算得到的MD5值与记录的MD5值无法对应,那么说明此文件块内容被修改,其将被视为无效;在系统运行开始时,Dispatchnode记录每个Tasknode的警戒线和临界点,即使后来某个Tasknode的这些参数值改变,Dispatchnode也可以通过心跳机制获取得到;上传模块服务被封装成一个实体类QFileUpload,每个QFileUpload实体类中维护着一个上传队列,上传之前需要先选择本地文件,选择的一个本地文件将被封装成一个上传任务对象,并被自动添加到上传任务队列里;上传任务对象随机产生一个唯一的ID值作为文件ID,还会计算生成文件的MD5值,并保存了上传文件的相关信息和上传信息;添加上传任务队列完成后即可进行上传,由于添加文件的MD5计算是异步的,所以在上传时有些比较大的文件有可能还没有获得MD5值,这时上传服务组件会自动获取已经数据准备完成得上传任务,然后依次执行;下载、删除模块服务和上传模块服务的实现思路一致,文件以分片的方式进行上传,分割后的文件块被分散保存在LXPFS集群的Tasknode上;Tasknode的任务进程实例在接收下载请求时,会根据文件共享池里的映射关系表索引文件块,并把这些文件块拼接形成一个完整的文件以支持组件下载;当用户或应用程序删除某个文件时,LXPFS集群会先检测这个文件在共享池里是否还在其他的映射;如果存在即被判断为软删除,那么只是删除用户所属的那条记录和映射;要是文件不存在其他的映射,就是硬删除,硬删除在删除映射的同时还会删除文件对应的文件块数据。...

【技术特征摘要】
1.LXPFS集群分布式文件存储系统,其特征在于,采用LXPFS集群给应用提供访问方法,通过封装好的JS API访问LXPFS中的文件;访问LXPFS文件的方式分为三种:读、写和删除;在前端实现了访问LXPFS文件的组件,在Web应用开发中,只需要生成一个组件,调用相应的接口就能实现访问;该系统采用主从模式的架构,由一个Dispatchnode和一个及以上的Tasknode组成;Dispatchnode是一个controller服务器,负责调配所有文件的存储以及处理并转发客户端的请求,Tasknode是在每节点设一个,负责管理它所在节点上的存储和响应客户端的请求;上传文件是将数据写入LXPFS集群的Tasknode中,下载文件则是读取Tasknode文件数据;Dispatchnode的工作内容分为以下几个部分:a.验证访问请求的IP是否已经注册;b.解析访问请求数据包,获取访问操作方式、操作对象以及其他相关信息;c.利用心跳机制,获取集群中目标节点服务器的负载参数,计算分析这些参数,获取最适合委派任务的目标节点位置;d.使用操作对象文件的MD5值索引文件,找到文件所在目标节点服务器实现秒传,否则将任务派发给最适合的目标节点;每个文件块在写入前,系统都会记录这个文件块的MD5值,作为它的有效性检查的依据;如果保存在系统上的某个文件块计算得到的MD5值与记录的MD5值无法对应,那么说明此文件块内容被修改,其将被视为无效;在系统运行开始时,Dispatchnode记录每个Tasknode的警戒线和临界点,即使后来某个Tasknode的这些参数值改变,Dispatchnode也可以通过心跳机制获取得到;上传模块服务被封装成一个实体类QFileUpload,每个QFileUpload实体类中维护着一个上传队列,上传之前需要先选择本地文件,选择的一个本地文件将被封装成一个上传任务对象,并被自动添加到上传任务队列里;上传任务对象随机产生一个唯一的ID值作为文件ID,还会计算生成文件的MD5值,并保存了上传文件的相关信息和上传信息;添加上传任务队列完成后即可进行上传,由于添加文件的MD5计算是异步的,所以在上传时有些比较大的文件有可能还没有获得MD5值,这时上传服务组件会自动获取已经数据准备完成得上传任务,然后依次执行;下载、删除模块服务和上传模块服务的实现思路一致,文件以分片的方式进行上传,分割后的文件块被分散保存在LXPFS集群的Tasknode上;Tasknode的任务进程实例在接收下载请求时,会根据文件共享池里的映射关系表索引文件块,并把这些文件块拼接形成一个完整的文件以支持组件下载;当用户或应用程序删除某个文件时,LXPFS集群会先检测这个文件在共享池里是否还在其他的映射;如果存在即被判断为软删除,那么只是删除用户所属的那条记录和映射;要是文件不存在其他的映射,就是硬...

【专利技术属性】
技术研发人员:李瑜段睿宏杨晴张劲松邓安明
申请(专利权)人:云南云电同方科技有限公司
类型:发明
国别省市:云南;53

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1